@Override public void onImageResults(List<Face> faces,Frame image,float timeStamp){
  mostRecentFrame=image;
  if (faces == null) {
    return;
  }
  performFPSCalculations();
  if (faces.size() <= 0) {
    drawingView.invalidatePoints();
  }
 else   if (faces.size() == 1) {
    metricViewLayout.setVisibility(View.VISIBLE);
    for (    MetricDisplay metricDisplay : metricDisplays) {
      updateMetricScore(metricDisplay,faces.get(0));
    }
    if (drawingView.getDrawPointsEnabled() || drawingView.getDrawAppearanceMarkersEnabled() || drawingView.getDrawEmojiMarkersEnabled()) {
      drawingView.updatePoints(faces,mirrorPoints);
    }
  }
 else {
    metricViewLayout.setVisibility(View.GONE);
    drawingView.updatePoints(faces,mirrorPoints);
  }
}

@ Override public void onImageResults ( List < Face > faces , Frame image , float timeStamp ) { mostRecentFrame = image ; if ( faces == null ) { return ; } performFPSCalculations ( ) ; if ( faces . size ( ) <= 0 ) { drawingView . invalidatePoints ( ) ; } else if ( faces . size ( ) == 1 ) { metricViewLayout . setVisibility ( View . VISIBLE ) ; for ( MetricDisplay metricDisplay : metricDisplays ) { updateMetricScore ( metricDisplay , faces . get ( 0 ) ) ; } if ( drawingView . getDrawPointsEnabled ( ) || drawingView . getDrawAppearanceMarkersEnabled ( ) || drawingView . getDrawEmojiMarkersEnabled ( ) ) { drawingView . updatePoints ( faces , mirrorPoints ) ; } } else { metricViewLayout . setVisibility ( View . GONE ) ; drawingView . updatePoints ( faces , mirrorPoints ) ; } }
this event is received every time the sdk processes a frame .
