luxlabs header browser preview


@class FigMetalAllocator, NSString, FigMetalContext, MPSImageHistogramEqualization, FigRegWarpPPGPUShaders, MPSImageHistogram;
@protocol MTLTexture, MTLBuffer;

@interface FigRegWarpPPGPU : NSObject <CMIRegWarp> {
    FigMetalContext *_metal;
    FigRegWarpPPGPUShaders *_shaders;
    struct { unsigned int w; unsigned int h; } _pyramidLevelsDim[8];
    id<MTLTexture> _referencePyramidImage[8];
    id<MTLTexture> _nonReferencePyramidImage[8];
    id<MTLBuffer> _referencePyramidCorners[8];
    id<MTLBuffer> _nonReferencePyramidCorners[8];
    struct { unsigned int x; unsigned int y; unsigned int width; unsigned int height; } _roi;
    struct { unsigned int x; unsigned int y; unsigned int width; unsigned int height; } _pyramidLevelsRoi[8];
    struct { float normX[2]; float normY[2]; float inverseX[2]; float inverseY[2]; } _normCoefs[8];
    float _inlierThreshold[8];
    struct { void /* unknown type, empty encoding */ pixelPitch; void /* unknown type, empty encoding */ distortionCenter; float inverseScalingLUTBinSizeRecip; float radiusScalingNormFactor; float forwardCoefficients[8]; float inverseCoefficients[8]; } _referenceGDCParams;
    struct { void /* unknown type, empty encoding */ pixelPitch; void /* unknown type, empty encoding */ distortionCenter; float inverseScalingLUTBinSizeRecip; float radiusScalingNormFactor; float forwardCoefficients[8]; float inverseCoefficients[8]; } _nonReferenceGDCParams;
    struct { unsigned long long numberOfHistogramEntries; BOOL histogramForAlpha; void /* unknown type, empty encoding */ minPixelValue; void /* unknown type, empty encoding */ maxPixelValue; } _mpsHistCfg;
    MPSImageHistogram *_mpsHist;
    MPSImageHistogramEqualization *_mpsHistEq;
    struct { struct { unsigned int w; unsigned int h; } dims; struct { unsigned int x; unsigned int y; unsigned int width; unsigned int height; } roi; struct { float normX[2]; float normY[2]; float inverseX[2]; float inverseY[2]; } normCoef; float minNCCThreshold; short minCornerResponseThreshold; struct { void /* unknown type, empty encoding */ pixelPitch; void /* unknown type, empty encoding */ distortionCenter; float inverseScalingLUTBinSizeRecip; float radiusScalingNormFactor; float forwardCoefficients[8]; float inverseCoefficients[8]; } refGDCParams; struct { void /* unknown type, empty encoding */ pixelPitch; void /* unknown type, empty encoding */ distortionCenter; float inverseScalingLUTBinSizeRecip; float radiusScalingNormFactor; float forwardCoefficients[8]; float inverseCoefficients[8]; } nrfGDCParams; BOOL applyGDC; } _cornerMatchingParams;
    unsigned int _numPyrLevels;
    unsigned int _imageWidth;
    unsigned int _imageHeight;
    BOOL _skipInitialDownsample;
    BOOL _performHistEq;
    unsigned int _ransacMinNumInliers;
    BOOL _allocateBuffersWithAllocator;
    BOOL _isShaderHarvesting;
}

@property (nonatomic) unsigned int maxNumberOfPyramidLevels;
@property (retain, nonatomic) FigMetalAllocator *allocator;
@property (nonatomic) BOOL applyGDC;
@property (readonly) unsigned long long hash;
@property (readonly) Class superclass;
@property (readonly, copy) NSString *description;
@property (readonly, copy) NSString *debugDescription;

+ (int)prewarmShaders:(id)a0;

- (void)releaseResources;
- (void)dealloc;
- (void).cxx_destruct;
- (void)_releaseBuffer:(id *)a0;
- (int)_setDefaultCornerMatchingParams;
- (int)_constructPyramid:(id *)a0 withTexture:(id)a1 mapping:(struct { unsigned char x0[256]; } *)a2 level0Only:(BOOL)a3;
- (int)_convertTransform:(struct { void /* unknown type, empty encoding */ x0[3]; })a0 toGPUTransform:(struct { void /* unknown type, empty encoding */ x0[3]; } *)a1;
- (int)_detectCorners:(id)a0 roi:(struct { unsigned int x0; unsigned int x1; unsigned int x2; unsigned int x3; })a1 corners:(id)a2 pyrLevel:(unsigned int)a3;
- (int)_determineNumPyrLevels:(unsigned int)a0 pyramid0Height:(unsigned int)a1;
- (id)_newBufferWithLength:(unsigned long long)a0 options:(unsigned long long)a1 label:(id)a2;
- (int)_setNormCoefs:(struct { float x0[2]; float x1[2]; float x2[2]; float x3[2]; } *)a0 width:(unsigned int)a1 height:(unsigned int)a2;
- (int)_updatePyramidRoi;
- (int)_verifyInputPixelFormat:(unsigned long long)a0;
- (int)allocateResources:(unsigned int)a0 imageHeight:(unsigned int)a1 imageFormat:(unsigned int)a2 externalMemory:(void *)a3 externalMemorySize:(unsigned int)a4;
- (int)allocateResourcesWithWidth:(unsigned int)a0 height:(unsigned int)a1;
- (int)computeHomography:(struct { void /* unknown type, empty encoding */ x0[3]; } *)a0 referenceKeypoints:(id)a1 nonReferenceKeypoints:(id)a2 keypointsCount:(unsigned int)a3;
- (id)initWithOptionalCommandQueue:(id)a0 config:(struct { unsigned int x0; unsigned int x1; unsigned int x2; unsigned int x3; unsigned int x4; unsigned int x5; unsigned int x6; float x7; float x8; unsigned int x9; unsigned int x10; BOOL x11; BOOL x12; } *)a1;
- (int)processNonReference:(struct __CVBuffer { } *)a0 gdcParams:(struct { float x0; float x1; float x2[8]; float x3[8]; } *)a1 outputTransform:(struct { float x0[9]; } *)a2;
- (int)processNonReference:(struct __CVBuffer { } *)a0 outputTransform:(struct { float x0[9]; } *)a1;
- (int)processNonReferenceTexture:(id)a0 gdcParams:(struct { float x0; float x1; float x2[8]; float x3[8]; } *)a1 outputTransform:(struct { float x0[9]; } *)a2;
- (int)processNonReferenceTexture:(id)a0 gdcParams:(struct { float x0; float x1; float x2[8]; float x3[8]; } *)a1 outputTransform:(struct { float x0[9]; } *)a2 mapping:(struct { unsigned char x0[256]; } *)a3;
- (int)processNonReferenceTexture:(id)a0 outputTransform:(struct { float x0[9]; } *)a1;
- (int)processReference:(struct __CVBuffer { } *)a0 gdcParams:(struct { float x0; float x1; float x2[8]; float x3[8]; } *)a1 regionOfInterest:(struct CGRect { struct CGPoint { double x0; double x1; } x0; struct CGSize { double x0; double x1; } x1; } *)a2 numKeypoints:(unsigned int *)a3;
- (int)processReference:(struct __CVBuffer { } *)a0 regionOfInterest:(struct CGRect { struct CGPoint { double x0; double x1; } x0; struct CGSize { double x0; double x1; } x1; } *)a1 numKeypoints:(unsigned int *)a2;
- (int)processReferenceTexture:(id)a0 gdcParams:(struct { float x0; float x1; float x2[8]; float x3[8]; } *)a1 regionOfInterest:(struct CGRect { struct CGPoint { double x0; double x1; } x0; struct CGSize { double x0; double x1; } x1; } *)a2 numKeypoints:(unsigned int *)a3;
- (int)processReferenceTexture:(id)a0 gdcParams:(struct { float x0; float x1; float x2[8]; float x3[8]; } *)a1 regionOfInterest:(struct CGRect { struct CGPoint { double x0; double x1; } x0; struct CGSize { double x0; double x1; } x1; } *)a2 numKeypoints:(unsigned int *)a3 mapping:(struct { unsigned char x0[256]; } *)a4;
- (int)processReferenceTexture:(id)a0 regionOfInterest:(struct CGRect { struct CGPoint { double x0; double x1; } x0; struct CGSize { double x0; double x1; } x1; } *)a1 numKeypoints:(unsigned int *)a2;

@end