/* Copyright 2023 The MediaPipe Authors.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
==============================================================================*/

syntax = "proto2";

package mediapipe.tasks.vision.face_landmarker.proto;

import "mediapipe/framework/calculator.proto";
import "mediapipe/framework/calculator_options.proto";
import "mediapipe/tasks/cc/core/proto/base_options.proto";
import "mediapipe/tasks/cc/vision/face_landmarker/proto/face_blendshapes_graph_options.proto";

option java_package = "com.google.mediapipe.tasks.vision.facelandmarker.proto";
option java_outer_classname = "FaceLandmarksDetectorGraphOptionsProto";

message FaceLandmarksDetectorGraphOptions {
  extend mediapipe.CalculatorOptions {
    optional FaceLandmarksDetectorGraphOptions ext = 508968149;
  }
  // Base options for configuring Task library, such as specifying the TfLite
  // model file with metadata, accelerator options, etc.
  optional core.proto.BaseOptions base_options = 1;

  // Minimum confidence value ([0.0, 1.0]) for confidence score to be considered
  // successfully detecting a face in the image.
  optional float min_detection_confidence = 2 [default = 0.5];

  // Whether to smooth the detected landmarks over timestamps. Note that
  // landmarks smoothing is only applicable for a single face. If multiple faces
  // landmarks are given, and smooth_landmarks is true, only the first face
  // landmarks would be smoothed, and the remaining landmarks are discarded in
  // the returned landmarks list.
  optional bool smooth_landmarks = 4;

  // Optional options for FaceBlendshapeGraph. If this options is set, the
  // FaceLandmarksDetectorGraph would output the face blendshapes.
  optional FaceBlendshapesGraphOptions face_blendshapes_graph_options = 3;
}
