@class NSData, NSArray, CVAFilterMaskedVariableBlur, CIColor, CVAFilterColorAlphaToFgBg, CVAPhotoMTLRingBuffer, NSObject, MTLRenderPassDescriptor; @protocol OS_dispatch_semaphore, MTLTexture, MTLDepthStencilState, MTLComputePipelineState, MTLBuffer, CVAVideoPipelinePropertiesSPI, MTLPipelineLibrarySPI, MTLRenderPipelineState, MTLLibrary, MTLDeviceSPI, MTLCommandQueue, OS_dispatch_queue; @interface VideoRelightingMetal : ImageSaverAndFileConfigRegistrator { id _device; id _library; id _pipelineLibrary; id _commandQueue; void *_metalContext; id _properties; MTLRenderPassDescriptor *_tcRenderDesc; id _tcKernel; id _tcDepthTexture; id _tcTexture; id _lightTexture; struct TC_MatrixUniforms { struct float4x4 { void /* unknown type, empty encoding */ columns[4]; } modelViewProjectionMatrix; } _tcMatrixUniformsBuffer; id _depthStencilState; id _kernel_CountVertical; id _kernel_Count; id _kernel_Slide; id _kernel_Relight[2][2][2]; id _kernel_AlphaBlendRGBATextureArray; id _texStub; NSData *_colorCubeUserData; id _texColorCubeUserData; id _texColorCubeStaticArray[7]; id _texSelectedColorCube; id _srcTexture; id _dstTexture; id _dstUVTexture; long long _frameIndex; long long _frameIndexWhenFacekitAllowed; id _alphaTexture; BOOL _trustAlpha; id _vertCountTexture; id _countTexture; id _slideTexture; id _rgbTransformMapContourNearTexture[2]; id _rgbTransformMapStudioNearTexture[2]; id _rgbTransformMapContourFarTexture[2]; id _rgbTransformMapStudioFarTexture[2]; id _rgbTransformMapCurrentNearTexturePtr; id _rgbTransformMapCurrentFarTexturePtr; id _rgbTransformMapCurrentTextureInterpolated; id _rgbTransformMapTextureSelectedPtr; float _lightMapsNearFarLerp; struct SlideUniforms { float center_x; float center_y; } _uniformBuffer_slide; struct RelightUniforms { void /* unknown type, empty encoding */ outSizeInv; void /* unknown type, empty encoding */ backgroundColor; void /* unknown type, blank encoding */ proxyToFaceEffectLerp; void /* unknown type, blank encoding */ blurStrengthByDistance; void /* unknown type, blank encoding */ portraitStyleStrength; void /* unknown type, blank encoding */ colorCubeMaskLerp; void /* unknown type, blank encoding */ colorCubeIntensity; void /* unknown type, blank encoding */ vignetteIntensity; void /* unknown type, blank encoding */ vignettingScale; void /* unknown type, empty encoding */ faceCenter01; void /* unknown type, blank encoding */ faceAngleYawRad; struct half2x2 { void /* unknown type, empty encoding */ columns[2]; } faceRotMat; struct TrapezoidUniforms { struct LerpUniforms { void /* unknown type, blank encoding */ m; void /* unknown type, blank encoding */ b; } l0; struct LerpUniforms { void /* unknown type, blank encoding */ m; void /* unknown type, blank encoding */ b; } l1; void /* unknown type, blank encoding */ ymin; void /* unknown type, blank encoding */ ymax; } rightSideTrapezoidU; struct TrapezoidUniforms { struct LerpUniforms { void /* unknown type, blank encoding */ m; void /* unknown type, blank encoding */ b; } l0; struct LerpUniforms { void /* unknown type, blank encoding */ m; void /* unknown type, blank encoding */ b; } l1; void /* unknown type, blank encoding */ ymin; void /* unknown type, blank encoding */ ymax; } leftSideTrapezoidU; struct LerpClampUniforms { struct LerpUniforms { void /* unknown type, blank encoding */ m; void /* unknown type, blank encoding */ b; } l; void /* unknown type, blank encoding */ y0; void /* unknown type, blank encoding */ y1; } horAngleLerpClampU; } _uniformBuffer_relight; struct float4x4 { void /* unknown type, empty encoding */ columns[4]; } _modelViewProjectionMatrix; struct float4x4 { void /* unknown type, empty encoding */ columns[4]; } _modelViewMatrix; struct float4x4 { void /* unknown type, empty encoding */ columns[4]; } _projectionMatrix; void /* unknown type, empty encoding */ _face3DCenter; void /* unknown type, empty encoding */ _faceModelCenterProjected; CIColor *_backgroundColor; float _proxyToFaceEffectLerpTemporal; float _proxyToFaceEffectLerpFinal; float _portraitStyleStrength; float _focusDistance; NSObject *_synchronousRelightingCallbackQueue; NSObject *_inflightSemaphore; MTLRenderPassDescriptor *_faceRenderDesc1; MTLRenderPassDescriptor *_faceRenderDesc2; MTLRenderPassDescriptor *_faceRenderDesc3; id _kernel_Face; id _facemaskRegionTexture; struct vector> { struct FaceVertex *__begin_; struct FaceVertex *__end_; struct __compressed_pair> { struct FaceVertex *__value_; } __end_cap_; } _modelVertices; CVAPhotoMTLRingBuffer *_vertexBuffer; struct FaceKitStreamedData { NSData *verticesPos; NSArray *intrinsics; NSArray *camR; NSArray *camT; NSArray *poseR; NSArray *poseT; NSData *landmarks; float confidence; } _faceKitStreamedData; BOOL _faceDetected; BOOL _faceDetectedReal; struct circular_buffer> { BOOL *m_buff; BOOL *m_end; BOOL *m_first; BOOL *m_last; unsigned long long m_size; } _faceDetectedRealHistory; struct optional>> { BOOL m_initialized; struct aligned_storage>> { union dummy_u { char data[64]; struct a8 { } aligner_; } dummy_; } m_storage; } _faceConfidenceRollingVariance; struct optional>> { BOOL m_initialized; struct aligned_storage>> { union dummy_u { char data[56]; struct a8 { } aligner_; } dummy_; } m_storage; } _faceRelightingAngleFactorsRollingMean; struct vector> { unsigned short *__begin_; unsigned short *__end_; struct __compressed_pair> { unsigned short *__value_; } __end_cap_; } _faceKitMeshTris; id _indexBufferImmutable; NSData *_faceKitMeshTexcoords; BOOL _debugFace; BOOL _debugFaceDraw; unsigned long long _indexOfCheekLandmark_topLeft; unsigned long long _indexOfCheekLandmark_bottomLeft; unsigned long long _indexOfCheekLandmark_topRight; unsigned long long _indexOfCheekLandmark_bottomRight; struct optional { BOOL m_initialized; unsigned long long m_storage; } _closestLeftCheekVertexID; struct optional { BOOL m_initialized; float m_storage; } _cheekAngle; CVAFilterColorAlphaToFgBg *_colorAlphaToFgBg; CVAFilterMaskedVariableBlur *_blurPyramidForSkinFg; id _texSkinRGBAPyramid; id _texSkinSegmentationAlias; float _vignettingScale; } @property (readonly) double gpuStartTime; @property (readonly) double gpuEndTime; @property (readonly) float relightingStability; - (void)configureRenderPipeline; - (id)getInternalColorCube:(int)a0; - (void)loadRGBTransformMapsForEffectVersion:(BOOL)a0; - (void)createTexturesWith:(unsigned long long)a0 imgHeight:(unsigned long long)a1; - (void)encodeRelightKernelToCommandBuffer:(id)a0; - (void)setModelVertices; - (void)generateModelNormals; - (void)renderWithSrcImage:(struct __CVBuffer { } *)a0 srcAlpha:(struct __CVBuffer { } *)a1 trustAlpha:(BOOL)a2 yuvSourceDownsampled:(id)a3 skinSegmentation:(struct __CVBuffer { } *)a4 dstImage:(struct __CVBuffer { } *)a5 faceKitProcessOutput:(id)a6 portraitStyleStrength:(float)a7 colorSim:(id)a8 disparity:(id)a9 focusDistance:(float)a10 singleCubeData:(id)a11 properties:(id)a12 callbackQueue:(id)a13 callback:(id /* block */)a14; - (void)encodeLerpNearFarMapsToCommandBuffer:(id)a0; - (void)encodeTCKernelToCommandBuffer:(id)a0; - (id).cxx_construct; - (void)encodeAlphaBlendRGBATextureArrayToCommandBuffer:(id)a0 inTexFirst:(id)a1 inTexSecond:(id)a2 outTex:(id)a3 alpha:(const float *)a4; - (void)encodeCountKernelToCommandBuffer:(id)a0; - (void)encodeSlideKernelToCommandBuffer:(id)a0; - (void)updateFaceKitStreamedDataFromProcessOutput:(id)a0; - (void)updateMatrixWithWidth:(int)a0 height:(int)a1 camera:(const void *)a2 pose:(const void *)a3; - (void)encodeVertCountKernelToCommandBuffer:(id)a0; - (void).cxx_destruct; - (void)updateUniforms:(BOOL)a0; - (id)loadCube:(id)a0; - (id)initWithMetalContext:(void *)a0; - (void)saveTexture:(id)a0 toImage:(id)a1; - (void)initCommon; - (void)updateModelAndPose:(void *)a0 camera:(void *)a1; - (void)loadRGBTransformMapsOnceTo:(id *)a0 namePrefix:(const void *)a1 forIntermediateResults:(BOOL)a2; - (void)initKernelFunctions; - (id)create3DTextureWithSize:(unsigned long long)a0; @end