Source: FaceTracker.js

/**
 * Provides tracking results obtained by visage|SDK. 
 * To enable this module pass the appropriate license to the SDKProvider.
 */
export class FaceTracker {
    static async Create(modulesManager) {
        const bsc = modulesManager.modules.visage.module;
        const bscAnalyzer = bsc.GetFaceTracker();       

        return new FaceTracker(bscAnalyzer, bsc);
    }

    constructor(bscAnalyzer, bsc) {
		this.bscAnalyzer = bscAnalyzer;
		this.bsc = bsc;
	}

    /** 
     *@callback FaceTrackerCallback
     *@param {Object} BeautyFaceData - Structure used as container for all face tracking and detection results.
	 * WARNING: this returns unmanaged objects and BeautyFaceData and all resources accessed
	 * should be cleaned up with delete() to prevent memory leaks
     */

	/**
     * Initiates face tracking. When a frame has been analyzed a call to the {@link FaceTrackerCallback}
	 * function is issued, with the analysis results passed as an argument.
     * <br/>
	 * 
	 * @example
	 * StartAnalysis(faceData => {
	 *	//look at data
	 *	faceData.delete();
	 * })
	 * 
     * @param {FaceTrackerCallback} FaceTrackerCallback - callback which will be called every time a new frame is analyzed
     */
	StartAnalysis(FaceTrackerCallback) {
		this.bscAnalyzer.SetCallback(FaceTrackerCallback);
        this.bscAnalyzer.StartAnalysis();
	}
	
	/**
     * Stops the face tracker and stops issuing calls to the callback given as an argument to the
	 * {@link StartAnalysis} function.
    	 * <br/>
     */
	StopAnalysis() {
		this.bscAnalyzer.StopAnalysis();
	}
	
	/**
	 * Resets the internal state of the face tracker.
	 */
	Reset() {
		this.bscAnalyzer.Reset();
	}
}