luxlabs header browser preview


@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<MTLDeviceSPI> _device;
    id<MTLLibrary> _defaultLibrary;
    id<MTLPipelineLibrarySPI> _pipelineLibrary;
    id<MTLCommandQueue> _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<MTLComputePipelineState> _diffusionMapKernel;
    id<MTLComputePipelineState> _fillBackgroundDisparityKernel;
    id<MTLComputePipelineState> _fillBackgroundDisparityKernel_faceMask;
    id<MTLComputePipelineState> _disparityConfidenceMaskKernel;
    id<MTLComputePipelineState> _disparityMasksKernel;
    id<MTLComputePipelineState> _disparityIsValidKernel;
    id<MTLComputePipelineState> _domainTransformXKernel;
    id<MTLComputePipelineState> _domainTransformYKernel;
    id<MTLComputePipelineState> _edgeAwareFillXKernel;
    id<MTLComputePipelineState> _edgeAwareFillYKernel;
    id<MTLComputePipelineState> _invalidDisparityMaskKernel;
    id<MTLComputePipelineState> _bgFillXKernel;
    id<MTLComputePipelineState> _bgFillYKernel;
    id<MTLComputePipelineState> _internalDisparityToCanonicalDisparityKernel;
    id<MTLComputePipelineState> _disparityDecimateKernel;
    id<MTLComputePipelineState> _alphaFillKernel;
    id<MTLComputePipelineState> _disparityCleanupKernel;
    id<MTLComputePipelineState> _disparityCleanupKernel_firstFrame;
    id<MTLComputePipelineState> _simpleConfidenceKernel;
    id<MTLComputePipelineState> _updateConfidenceAndLastValidDisparityKernel;
    id<MTLComputePipelineState> _updateConfidenceAndLastValidDisparityKernel_useTemporalConfidence;
    id<MTLComputePipelineState> _roughDisparityKernel;
    id<MTLComputePipelineState> _temporalDisparityFilterKernel;
    id<MTLComputePipelineState> _temporalDisparityFilterKernel_fallbackToInvalid;
    id<MTLComputePipelineState> _renderingDisparityDeweightKernel;
    CVAPhotoMTLRingBuffer *_disparityConfig;
    id<MTLComputePipelineState> _renderingDisparityFillAndFilterKernel;
    struct CompositeConfig { unsigned int frameNumber; unsigned int seedGeneratorFactor; int noiseBits; float noiseBitsFactor; float cubeIntensity; float noisePercentToAddAtInfinity; } _noiseConfig;
    CVAFilterMaskedVariableBlur *_maskedVariableBlur;
    id<MTLComputePipelineState> _halfDownSampler;
    id<MTLComputePipelineState> _colorSimKernel;
    id<MTLComputePipelineState> _colorSimL1Kernel;
    id<MTLComputePipelineState> _temporalCoefficientsFilterKernel;
    id<MTLComputePipelineState> _guidedFilterWeightKernel;
    NSObject<OS_dispatch_semaphore> *_semaphore;
    id<MTLTexture> _rTexture;
    id<MTLTexture> _gTexture;
    id<MTLTexture> _bTexture;
    id<MTLTexture> _bg;
    id<MTLTexture> _blurredBg;
    id<MTLTexture> _deweightedDisparity;
    id<MTLTexture> _shift[2];
    id<MTLTexture> _coc;
    id<MTLTexture> _sdofYIntermediate;
    id<MTLTexture> _sdofUVIntermediate;
    id<MTLTexture> _sdofInYTexture;
    id<MTLTexture> _sdofInUVTexture;
    id<MTLTexture> _sdofOutYTexture;
    id<MTLTexture> _sdofOutUVTexture;
    id<MTLTexture> _coloredYTexture;
    id<MTLTexture> _coloredUVTexture;
    id<MTLTexture> _bgColorLut;
    id<MTLTexture> _fgColorLut;
    id<MTLTexture> _stageLightProxyLut;
    id<MTLTexture> _stageLightLut;
    id<MTLResourceGroupSPI> _backgroundTextureGroup;
    MPSImageBox *_disparityBlurBoxKernel;
    MPSImageBox *_fgBlurBoxKernel;
    MPSImageAreaMin *_fgMaskErosionKernel;
    id<MTLTexture> _gfForegroundMask;
    id<MTLTexture> _gfWeight;
    id<MTLTexture> _disparityLastValidValue[2];
    id<MTLTexture> _disparity[2];
    id<MTLTexture> _facemaskDisparity;
    id<MTLTexture> _filledDisparityTexture;
    id<MTLTexture> _filledDisparityNoInvalidTexture;
    id<MTLTexture> _temporallyFilteredDisparity;
    id<MTLTexture> _disparityConfidenceMaskTexture;
    id<MTLTexture> _smoothConfidence[2];
    id<MTLTexture> _smoothDisparity[2];
    id<MTLTexture> _roughDisparity;
    id<MTLTexture> _diffusionMapTexture;
    id<MTLTexture> _disparityIsValidTexture;
    id<MTLTexture> _distanceFromKnownDisparityTexture;
    id<MTLTexture> _domainTransformXTexture;
    id<MTLTexture> _domainTransformYTexture;
    id<MTLTexture> _edgeAwareFillTempTexture;
    id<MTLTexture> _bgFillTempTexture;
    id<MTLTexture> _invalidDisparityMaskTexture;
    id<MTLTexture> _initDisparity;
    id<MTLTexture> _outputCanonicalDisparity;
    id<MTLTexture> _coeff;
    id<MTLTexture> _coeffHistory[2];
    id<MTLTexture> _isForegroundTexture;
    id<MTLTexture> _distanceToForegroundTexture;
    id<MTLTexture> _alphaNoPostprocessing;
    id<MTLResourceGroupSPI> _alphaNoPostprocessingGroup;
    id<MTLResourceGroupSPI> _edgeAwareGroup;
    id<MTLResourceGroupSPI> _bgFillGroup;
    id<MTLTexture> _scaledSource[2];
    struct __CVBuffer *_scaledSourceCV[2];
    id<MTLTexture> _tempFloatR32FloatTexture;
    struct __CVBuffer { } *_yuvSourceDownsampledBuffer;
    BOOL _doFaceMask;
    id<MTLTexture> _facemaskRegionTexture;
    unsigned long long _frameIndex;
    MPSImageGaussianBlur *_smoothFilter;
    struct __IOSurfaceAccelerator { } *_hwScaler;
    id<MTLTexture> _yuvSourceDownsampledTexture;
    NSData *_lastBgLutData;
    NSData *_lastFgLutData;
    NSData *_lastStageLightProxyCubeData;
    NSData *_lastStageLightCubeData;
    NSObject<OS_dispatch_queue> *_synchronousRenderingCallbackQueue;
    NSObject<OS_dispatch_semaphore> *_renderingCallbackSemaphore;
    NSObject<OS_dispatch_queue> *_synchronousMattingCallbackQueue;
    NSObject<OS_dispatch_semaphore> *_mattingCallbackSemaphore;
    BOOL _sdofRenderingHasForegroundBlur;
    PTRenderPipeline *_ptPipeline;
    id<PTRenderState> _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<MTLTexture> colorSim;
@property (readonly) id<MTLTexture> 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, float> { 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