{
   "company_name": "id3",
   "domain": "eu",
   "full_company_name": "id3 Technologies",
   "product_name": "face",
   "languages": [
      "cpp",
      "dotnet",
      "dart",
      "java",
      "swift",
      "python"
   ],
   "autodoc": "sphinx",
   "external_apis_paths": [
      "C:/Gitlab-Runner/externals-cache/",
      "externals/",
      "{WIN_CI_CACHE}"
   ],
   "external_apis": [
      {
         "product_name": "image",
         "version": "3.13.1",
         "codegen_api_file_subpath": "id3Image/{VERSION}/codegen/image_api.json",
         "non_public_classes": [
            "image_dict",
            "image_list",
            "string_list"
         ]
      },
      {
         "product_name": "license",
         "version": "8.8.0",
         "codegen_api_file_subpath": "id3License/{VERSION}/codegen/license_api.json",
         "non_public_classes": [
            "license"
         ]
      }
   ],
   "classes": [
      {
         "name": "image_dict",
         "type": "basic",
         "copyable": true,
         "dict": true,
         "base_module_type": "h_face_image",
         "keys": "h_face_string_list"
      },
      {
         "name": "image_list",
         "doc": [
            "Represents a list of images."
         ],
         "type": "basic",
         "copyable": true,
         "list": true,
         "base_module_type": "h_face_image"
      },
      {
         "name": "detected_face",
         "doc": [
            "Represents a detected face."
         ],
         "copyable": true,
         "members": [
            {
               "name": "bounds",
               "type": "s_face_rectangle",
               "default_value": "{}",
               "setter": true,
               "doc": "Bounds of the detected face."
            },
            {
               "name": "detection_score",
               "type": "int",
               "default_value": "0",
               "doc": "Confidence score of the detected face."
            },
            {
               "name": "id",
               "type": "int",
               "default_value": "0",
               "setter": true,
               "doc": "ID of the detected face."
            },
            {
               "name": "landmarks",
               "type": "h_face_point_list",
               "default_value": "{}",
               "setter": true,
               "doc": "Landmarks (eyes, nose and mouth corners) of the detected face."
            }
         ],
         "functions": [
            {
               "name": "create",
               "doc": "Creates a detected face.",
               "type": "constructor",
               "parameters": [
                  {
                     "name": "bounds",
                     "type": "s_face_rectangle",
                     "io": "in",
                     "doc": "Bounds of the detected face."
                  },
                  {
                     "name": "detection_score",
                     "type": "int",
                     "io": "in",
                     "doc": "Confidence score of the detected face."
                  },
                  {
                     "name": "id",
                     "type": "int",
                     "io": "in",
                     "doc": "ID of the detected face."
                  },
                  {
                     "name": "landmarks",
                     "type": "h_face_point_list",
                     "io": "in",
                     "doc": "Landmarks (eyes, nose and mouth corners) of the detected face."
                  }
               ]
            },
            {
               "name": "from_buffer",
               "doc": "Imports the face object from a buffer.",
               "type": "constructor",
               "parameters": [
                  {
                     "name": "data",
                     "type": "unsigned char",
                     "array": true,
                     "io": "in",
                     "doc": "Buffer to import the face object from."
                  }
               ]
            },
            {
               "name": "from_file",
               "doc": "Imports the face object from a file.",
               "type": "constructor",
               "parameters": [
                  {
                     "name": "path",
                     "type": "string",
                     "io": "in",
                     "doc": "Path to the file to import the face object from."
                  }
               ]
            },
            {
               "name": "get_distance_to_camera",
               "doc": "Gets the distance between the detected face and the camera when using a depth map in pixels.",
               "parameters": [
                  {
                     "name": "depth_image",
                     "type": "h_face_image",
                     "io": "in",
                     "doc": "Depth image to process."
                  },
                  {
                     "name": "distance_to_camera",
                     "type": "int",
                     "io": "out",
                     "doc": "The estimated distance to camera in pixels."
                  }
               ]
            },
            {
               "name": "get_interocular_distance",
               "doc": "Gets the distance between the eyes (IOD) of the detected face in pixels.",
               "parameters": [
                  {
                     "name": "iod",
                     "type": "int",
                     "io": "out",
                     "doc": "The computed interocular distance (IOD) in pixels."
                  }
               ]
            },
            {
               "name": "get_expanded_bounds",
               "doc": "Gets the bounding box around the detected face with specified aspect ratio and specified margin.",
               "parameters": [
                  {
                     "name": "aspect_ratio",
                     "type": "float",
                     "io": "in",
                     "doc": "Aspect ratio of the bounding box. Default recommended value is 1.33 (4/3)."
                  },
                  {
                     "name": "margin",
                     "type": "float",
                     "io": "in",
                     "doc": "Relative margin around the detected face. Recommended value is 0.5."
                  },
                  {
                     "name": "portrait_bounds",
                     "type": "s_face_rectangle",
                     "io": "out",
                     "doc": "The portrait bounds."
                  }
               ]
            },
            {
               "name": "get_portrait_bounds",
               "doc": [
                  "Gets the bounding box of the detected face for ICAO portrait cropping.",
                  "This method shall be used to ensure compliance with the ICAO standard."
               ],
               "parameters": [
                  {
                     "name": "eye_image_width_ratio",
                     "type": "float",
                     "io": "in",
                     "doc": "Ratio between eye distance and image width. Must be in the range ]0;1[. Default recommended value is 0.25."
                  },
                  {
                     "name": "eye_image_height_ratio",
                     "type": "float",
                     "io": "in",
                     "doc": "Ratio between eye distance to top and image height. Must be in the range ]0;1[. Default recommended value is 0.45."
                  },
                  {
                     "name": "image_ratio",
                     "type": "float",
                     "io": "in",
                     "doc": "Ratio between image height and image width. Default recommended value is 1.33 (4/3)."
                  },
                  {
                     "name": "portrait_bounds",
                     "type": "s_face_rectangle",
                     "io": "out",
                     "doc": "The portrait bounds of the detected face."
                  }
               ]
            },
            {
               "name": "rescale",
               "doc": "Rescales the detected face object bounding box and landmarks. This function can be useful if the image was downscaled to speed up detection, then you need to upscale the detected face to fit the source image size.",
               "parameters": [
                  {
                     "name": "scale",
                     "type": "float",
                     "io": "in",
                     "doc": "The multiplicative rescaling factor to apply to the face object."
                  }
               ]
            },
            {
               "name": "rotate",
               "doc": "Rotates the face object by a given angle in degrees from a given center.",
               "parameters": [
                  {
                     "name": "angle",
                     "type": "int",
                     "io": "in",
                     "doc": "Angle of the rotation to apply to the face object."
                  },
                  {
                     "name": "center",
                     "type": "s_face_point",
                     "io": "in",
                     "doc": "Center of the rotation to apply to the face object."
                  }
               ]
            },
            {
               "name": "to_file",
               "doc": "Saves the face object to a file.",
               "parameters": [
                  {
                     "name": "path",
                     "type": "string",
                     "io": "in",
                     "doc": "Path to the file to export the face object to."
                  }
               ]
            },
            {
               "name": "to_buffer",
               "doc": "Exports the face object to a buffer.",
               "parameters": [
                  {
                     "name": "data",
                     "type": "unsigned char",
                     "array": true,
                     "io": "out",
                     "doc": "The buffer to which the face object is exported.",
                     "init_size": null
                  }
               ]
            },
            {
               "name": "translate",
               "doc": "Translates the face object.",
               "parameters": [
                  {
                     "name": "tx",
                     "type": "int",
                     "io": "in",
                     "doc": "Translation to apply to the face object alongside the x-axis."
                  },
                  {
                     "name": "ty",
                     "type": "int",
                     "io": "in",
                     "doc": "Translation to apply to the face object alongside the y-axis."
                  }
               ]
            }
         ]
      },
      {
         "name": "tracked_face",
         "doc": [
            "Represents a tracked face."
         ],
         "copyable": true,
         "inherits_from": "h_face_detected_face",
         "members": [
            {
               "name": "tracking_status",
               "type": "e_face_tracking_status",
               "default_value": "initialized",
               "doc": "Status of the tracked face. See FaceTrackingStatus for more details."
            },
            {
               "name": "predicted_bounds",
               "type": "s_face_rectangle",
               "default_value": "{}",
               "doc": "Predicted bounds of the tracked face. Those bounds are computed using a Kalman filter which has the effect of making them smooth and robust to false non-detections."
            },
            {
               "name": "face_template",
               "type": "h_face_face_template",
               "default_value": "null",
               "doc": "Computed template the tracked face. It aims at tracking an identity over time and is consolidated."
            }
         ],
         "functions": [
            {
               "name": "get_as_detected_face",
               "doc": "Gets the tracked face as a detected face.",
               "parameters": [
                  {
                     "name": "detected_face",
                     "type": "h_face_detected_face",
                     "io": "out",
                     "doc": "The tracked face as a detected face."
                  }
               ]
            }
         ]
      },
      {
         "name": "detected_face_list",
         "doc": [
            "Represents a list of detected faces."
         ],
         "copyable": true,
         "list": true,
         "base_module_type": "h_face_detected_face",
         "members": [],
         "functions": [
            {
               "name": "find_detected_face",
               "doc": "Finds a detected face by ID.",
               "parameters": [
                  {
                     "name": "id",
                     "type": "int",
                     "io": "in",
                     "doc": "ID of the detected face to find in the list."
                  },
                  {
                     "name": "detected_face",
                     "type": "h_face_detected_face",
                     "io": "out",
                     "doc": "The found detected face."
                  }
               ]
            },
            {
               "name": "get_id_list",
               "doc": "Gets the list of IDs in the list.",
               "parameters": [
                  {
                     "name": "ids",
                     "type": "int",
                     "array": true,
                     "io": "out",
                     "doc": "The list of IDs in the list."
                  }
               ]
            },
            {
               "name": "get_largest_face",
               "doc": "Gets the largest face in the list.",
               "parameters": [
                  {
                     "name": "largest_face",
                     "type": "h_face_detected_face",
                     "io": "out",
                     "doc": "The largest detected face in the list."
                  }
               ]
            },
            {
               "name": "rescale_all",
               "doc": "Rescales all detected faces in the list.",
               "parameters": [
                  {
                     "name": "scale",
                     "type": "float",
                     "io": "in",
                     "doc": "Scale factor to apply. Range is [0;+inf[."
                  }
               ]
            }
         ]
      },
      {
         "name": "face_analyser",
         "doc": [
            "Provides methods for analysing the characteristics of portrait image."
         ],
         "members": [
            {
               "name": "expression_sensibility",
               "type": "int",
               "default_value": "60",
               "setter": true,
               "doc": [
                  "Sensibility of the expression classifier.",
                  "The higher the value, the more sensitive the algorithm will be, meaning that it will be less likely to estimate neutral expression out of the detected face.",
                  "Hint: Default value is 60."
               ]
            },
            {
               "name": "over_exposure_sensibility",
               "type": "int",
               "default_value": "188",
               "setter": true,
               "doc": [
                  "Sensibility of the over-exposure classifier, from 0 to 255.",
                  "The lower the value, the more sensitive the algorithm will be, meaning that it will be more likely to estimate over-exposed face images.",
                  "Hint: Default value is 188."
               ]
            },
            {
               "name": "under_exposure_sensibility",
               "type": "int",
               "default_value": "66",
               "setter": true,
               "doc": [
                  "Sensibility of the under-exposure classifier, from 0 to 255.",
                  "The higher the value, the more sensitive the algorithm will be, meaning that it will be more likely to estimate under-exposed face images.",
                  "Hint: Default value is 66."
               ]
            },
            {
               "name": "thread_count",
               "type": "int",
               "default_value": "1",
               "setter": true,
               "doc": [
                  "Number of threads to be used for face analysis.",
                  "Hint: Default value is 1. Allocating more than one thread can increase the speed of the process."
               ]
            }
         ],
         "functions": [
            {
               "name": "compute_age",
               "doc": [
                  "Computes the age of a detected face.",
                  "Important: Loading the ``FaceAgeEstimator`` model is required to use this function."
               ],
               "parameters": [
                  {
                     "name": "image",
                     "type": "h_face_image",
                     "io": "in",
                     "doc": "Source image to process."
                  },
                  {
                     "name": "detected_face",
                     "type": "h_face_detected_face",
                     "io": "in",
                     "doc": "Detected face to process."
                  },
                  {
                     "name": "age",
                     "type": "int",
                     "io": "out",
                     "doc": "The estimated age of the detected face."
                  }
               ]
            },
            {
               "name": "compute_attributes",
               "doc": [
                  "Computes the attributes of a detected face.",
                  "Important: Loading the model ``FaceAttributesClassifier`` is required to use this function."
               ],
               "parameters": [
                  {
                     "name": "image",
                     "type": "h_face_image",
                     "io": "in",
                     "doc": "Source image to process."
                  },
                  {
                     "name": "detected_face",
                     "type": "h_face_detected_face",
                     "io": "in",
                     "doc": "Detected face to process."
                  },
                  {
                     "name": "attributes",
                     "type": "s_face_face_attributes",
                     "io": "out",
                     "doc": "The estimated attributes of the detected face."
                  }
               ]
            },
            {
               "name": "compute_background_uniformity",
               "doc": [
                  "Computes the background uniformity behind a detected face.",
                  "This function must be used for a portrait image with only one face in it. A high uniformity score means that the background is uniform.",
                  "Important: Loading the model ``FaceBackgroundUniformity`` is required to use this function."
               ],
               "parameters": [
                  {
                     "name": "image",
                     "type": "h_face_image",
                     "io": "in",
                     "doc": "Source image to process."
                  },
                  {
                     "name": "detected_face",
                     "type": "h_face_detected_face",
                     "io": "in",
                     "doc": "Detected face to process."
                  },
                  {
                     "name": "background_uniformity",
                     "type": "s_face_background_uniformity",
                     "io": "out",
                     "doc": "The estimated background uniformity. Both color and texture scores are in the range [0:100]. The minimum recommended thresholds are respectively 80 for color and 80 for texture."
                  }
               ]
            },
            {
               "name": "check_colorized_image",
               "doc": "Verifies if an image is colorized or grayscale.",
               "parameters": [
                  {
                     "name": "image",
                     "type": "h_face_image",
                     "io": "in",
                     "doc": "Source image to process."
                  },
                  {
                     "name": "is_colorized",
                     "type": "bool",
                     "io": "out",
                     "doc": "The boolean decision: True if colorized, False if grayscale."
                  }
               ]
            },
            {
               "name": "compute_expression",
               "doc": [
                  "Computes the expression of a detected face.",
                  "Important: Loading the ``FaceExpressionClassifier`` model is required to use this function."
               ],
               "parameters": [
                  {
                     "name": "image",
                     "type": "h_face_image",
                     "io": "in",
                     "doc": "Source image to process."
                  },
                  {
                     "name": "detected_face",
                     "type": "h_face_detected_face",
                     "io": "in",
                     "doc": "Detected face to process."
                  },
                  {
                     "name": "expression",
                     "type": "e_face_face_expression",
                     "io": "out",
                     "doc": "The estimated expression of the detected face."
                  }
               ]
            },
            {
               "name": "compute_eye_openness",
               "doc": [
                  "Computes the eye openness of a detected face.",
                  "The minimum recommanded value for is 90.",
                  "Important: Loading the ``EyeOpennessDetector`` model is required to use this function."
               ],
               "parameters": [
                  {
                     "name": "image",
                     "type": "h_face_image",
                     "io": "in",
                     "doc": "Source image to process."
                  },
                  {
                     "name": "detected_face",
                     "type": "h_face_detected_face",
                     "io": "in",
                     "doc": "Detected face to process."
                  },
                  {
                     "name": "landmarks",
                     "type": "h_face_point_list",
                     "io": "in",
                     "doc": "Estimated landmarks of the detected face. Must be computed with the face analyser."
                  },
                  {
                     "name": "eye_openness_scores",
                     "type": "int",
                     "array": true,
                     "io": "out",
                     "doc": "The estimated openness scores of left and right eyes of the detected face in this order.",
                     "init_size": "2"
                  }
               ]
            },
            {
               "name": "compute_eye_redness",
               "doc": [
                  "Computes the eye redness of a detected face.",
                  "The maximum recommanded value for an ICAO-compliant portrait is 10.",
                  "Important: Loading the ``EyeRednessDetector`` model is required to use this function."
               ],
               "parameters": [
                  {
                     "name": "image",
                     "type": "h_face_image",
                     "io": "in",
                     "doc": "Source image to process."
                  },
                  {
                     "name": "detected_face",
                     "type": "h_face_detected_face",
                     "io": "in",
                     "doc": "Detected face to process."
                  },
                  {
                     "name": "landmarks",
                     "type": "h_face_point_list",
                     "io": "in",
                     "doc": "Estimated landmarks of the detected face. Must be computed with the face analyser."
                  },
                  {
                     "name": "eye_redness_scores",
                     "type": "int",
                     "array": true,
                     "io": "out",
                     "doc": "The estimated redness scores of left and right eyes of the detected face in this order.",
                     "init_size": "2"
                  }
               ]
            },
            {
               "name": "compute_eye_gaze",
               "doc": [
                  "Computes the eye gaze of a detected face.",
                  "Important: Loading the ``EyeGazeEstimator`` model is required to use this function."
               ],
               "parameters": [
                  {
                     "name": "image",
                     "type": "h_face_image",
                     "io": "in",
                     "doc": "Source image to process."
                  },
                  {
                     "name": "detected_face",
                     "type": "h_face_detected_face",
                     "io": "in",
                     "doc": "Detected face to process."
                  },
                  {
                     "name": "landmarks",
                     "type": "h_face_point_list",
                     "io": "in",
                     "doc": "Estimated landmarks of the detected face. Must be computed with the face analyser."
                  },
                  {
                     "name": "eye_gaze",
                     "type": "s_face_eye_gaze",
                     "io": "out",
                     "doc": "The estimated gaze of left and right eyes of the detected face."
                  }
               ]
            },
            {
               "name": "compute_geometric_attributes",
               "doc": "Computes the geometric attributes of a detected face. This function must be used for a portrait image with only one face in it.",
               "parameters": [
                  {
                     "name": "image",
                     "type": "h_face_image",
                     "io": "in",
                     "doc": "Source image to process."
                  },
                  {
                     "name": "detected_face",
                     "type": "h_face_detected_face",
                     "io": "in",
                     "doc": "Detected face to process."
                  },
                  {
                     "name": "landmarks",
                     "type": "h_face_point_list",
                     "io": "in",
                     "doc": "Estimated landmarks of the detected face. Must be computed with the face analyser."
                  },
                  {
                     "name": "geometric_attributes",
                     "type": "s_face_geometric_attributes",
                     "io": "out",
                     "doc": "The estimated geometric attributes of the detected face."
                  }
               ]
            },
            {
               "name": "compute_glasses_attributes",
               "doc": "Computes the glasses attributes of a detected face. This function must be used for a portrait image with only one face in it.",
               "parameters": [
                  {
                     "name": "image",
                     "type": "h_face_image",
                     "io": "in",
                     "doc": "Source image to process."
                  },
                  {
                     "name": "detected_face",
                     "type": "h_face_detected_face",
                     "io": "in",
                     "doc": "Detected face to process."
                  },
                  {
                     "name": "landmarks",
                     "type": "h_face_point_list",
                     "io": "in",
                     "doc": "Estimated landmarks of the detected face. Must be computed with the face analyser."
                  },
                  {
                     "name": "glasses_attributes",
                     "type": "s_face_glasses_attributes",
                     "io": "out",
                     "doc": "The estimated glasses attributes of the detected face."
                  }
               ]
            },
            {
               "name": "compute_landmarks",
               "doc": [
                  "Computes 68 landmarks of a detected face.",
                  "Important: Loading the ``FaceLandmarksEstimator`` model is required to use this function."
               ],
               "parameters": [
                  {
                     "name": "image",
                     "type": "h_face_image",
                     "io": "in",
                     "doc": "Source image to process."
                  },
                  {
                     "name": "detected_face",
                     "type": "h_face_detected_face",
                     "io": "in",
                     "doc": "Detected face to process."
                  },
                  {
                     "name": "landmarks",
                     "type": "h_face_point_list",
                     "io": "out",
                     "doc": "The estimated landmarks of the detected face."
                  }
               ]
            },
            {
               "name": "compute_noise",
               "doc": "Measures the image noise.",
               "parameters": [
                  {
                     "name": "image",
                     "type": "h_face_image",
                     "io": "in",
                     "doc": "Source image to process."
                  },
                  {
                     "name": "noise_score",
                     "type": "int",
                     "io": "out",
                     "doc": "The estimated noise score. 0 means no noise, 100 means no signal."
                  }
               ]
            },
            {
               "name": "compute_photographic_attributes",
               "doc": "Computes the photographic attributes of a detected face. This function must be used for a portrait image with only one face in it.",
               "parameters": [
                  {
                     "name": "image",
                     "type": "h_face_image",
                     "io": "in",
                     "doc": "Source image to process."
                  },
                  {
                     "name": "detected_face",
                     "type": "h_face_detected_face",
                     "io": "in",
                     "doc": "Detected face to process."
                  },
                  {
                     "name": "landmarks",
                     "type": "h_face_point_list",
                     "io": "in",
                     "doc": "Estimated landmarks of the detected face. Must be computed with the face analyser."
                  },
                  {
                     "name": "photographic_attributes",
                     "type": "s_face_photographic_attributes",
                     "io": "out",
                     "doc": "The estimated photographic attributes of the detected face."
                  }
               ]
            },
            {
               "name": "compute_pose",
               "doc": [
                  "Computes the pose of a detected face.",
                  "Important: Loading the ``FacePoseEstimator`` model is required to use this function."
               ],
               "parameters": [
                  {
                     "name": "detected_face",
                     "type": "h_face_detected_face",
                     "io": "in",
                     "doc": "Detected face to process."
                  },
                  {
                     "name": "pose",
                     "type": "s_face_face_pose",
                     "io": "out",
                     "doc": "The estimated pose of the detected face."
                  }
               ]
            },
            {
               "name": "compute_pose_with_landmarks",
               "doc": [
                  "Computes the pose of a detected face using the specified 68-point landmarks.",
                  "Loading the model ``FacePoseEstimator1A`` is required to use this function."
               ],
               "parameters": [
                  {
                     "name": "detected_face",
                     "type": "h_face_detected_face",
                     "io": "in",
                     "doc": "Detected face to process."
                  },
                  {
                     "name": "landmarks",
                     "type": "h_face_point_list",
                     "io": "in",
                     "doc": "Estimated landmarks of the detected face. Must be computed with the face analyser."
                  },
                  {
                     "name": "pose",
                     "type": "s_face_face_pose",
                     "io": "out",
                     "doc": "The estimated pose of the detected face."
                  }
               ]
            },
            {
               "name": "detect_face_mask",
               "doc": [
                  "Detects the presence of a face mask on a detected face.",
                  "A high score means that there is a high chance that the person is wearing a mask.",
                  "The minimum recommended threshold is 15.",
                  "Important: Loading the ``FaceMaskClassifier``, model is required to use this function."
               ],
               "parameters": [
                  {
                     "name": "image",
                     "type": "h_face_image",
                     "io": "in",
                     "doc": "Source image to process."
                  },
                  {
                     "name": "detected_face",
                     "type": "h_face_detected_face",
                     "io": "in",
                     "doc": "Detected face to process."
                  },
                  {
                     "name": "score",
                     "type": "int",
                     "io": "out",
                     "doc": "The face mask presence score of the detected face."
                  }
               ]
            },
            {
               "name": "detect_occlusions",
               "doc": [
                  "Detects occlusions on the subject's face.",
                  "Important: This function requires the ``FaceOcclusionDetector`` model to be loaded."
               ],
               "parameters": [
                  {
                     "name": "image",
                     "type": "h_face_image",
                     "io": "in",
                     "doc": "Source image to process."
                  },
                  {
                     "name": "detected_face",
                     "type": "h_face_detected_face",
                     "io": "in",
                     "doc": "Detected face to process."
                  },
                  {
                     "name": "scores",
                     "type": "face_occlusion_scores",
                     "io": "out",
                     "doc": "The occlusion scores of the detected face."
                  }
               ]
            },
            {
               "name": "segment_face",
               "doc": [
                  "Computes a segmentation map of a face.",
                  "Important: This methods requires the ``FaceSegmenter`` model to be loaded."
               ],
               "parameters": [
                  {
                     "name": "image",
                     "type": "h_face_image",
                     "io": "in",
                     "doc": "Source image to process."
                  },
                  {
                     "name": "segmentation_map",
                     "type": "h_face_image",
                     "io": "out",
                     "doc": "The map of segmented face."
                  }
               ]
            },
            {
              "name": "segment_background",
              "doc": [
                 "Computes face segmentation mask for background removal.",
                 "Important: This methods requires the ``FaceBackgroundSegmenter`` model to be loaded."
              ],
              "parameters": [
                 {
                    "name": "image",
                    "type": "h_face_image",
                    "io": "in",
                    "doc": "Source image to process."
                 },
                 {
                    "name": "segmentation_mask",
                    "type": "h_face_image",
                    "io": "out",
                    "doc": "The mask of segmented face."
                 }
              ]
            },
            {
               "name": "apply_mask",
               "doc": "Applies a mask to replace the background with the specified color and returns a 24-bit BGR image.",
               "parameters": [
                  {
                     "name": "image",
                     "type": "h_face_image",
                     "io": "in",
                     "doc": "Source image to process."
                  },
                  {
                     "name": "mask",
                     "type": "h_face_image",
                     "io": "in",
                     "doc": "Mask to be applied. Must be a 8-bit greyscale image of same size as the input image."
                  },
                  {
                     "name": "red",
                     "type": "int",
                     "io": "in",
                     "doc": "Green channel of the background color. Must be a value from 0 to 255."
                  },
                  {
                     "name": "green",
                     "type": "int",
                     "io": "in",
                     "doc": "Red channel of the background color. Must be a value from 0 to 255."
                  },
                  {
                     "name": "blue",
                     "type": "int",
                     "io": "in",
                     "doc": "Blue channel of the background color. Must be a value from 0 to 255."
                  },
                  {
                     "name": "segmented_face",
                     "type": "h_face_image",
                     "io": "out",
                     "doc": "The output image."
                  }
               ]
            },
            {
               "name": "apply_alpha_mask",
               "doc": "Applies an alpha mask to suppress the background and returns a 32-bit BGRA image.",
               "parameters": [
                  {
                     "name": "image",
                     "type": "h_face_image",
                     "io": "in",
                     "doc": "Source image to process."
                  },
                  {
                     "name": "mask",
                     "type": "h_face_image",
                     "io": "in",
                     "doc": "Mask of segmented face."
                  },
                  {
                     "name": "segmented_face",
                     "type": "h_face_image",
                     "io": "out",
                     "doc": "The output image."
                  }
               ]
            },
            {
               "name": "remove_compression_artifacts",
               "doc": [
                  "Upscale and enhance the image of a face.",
                  "Important: This methods requires the ``CompressionArtifactRemover`` model to be loaded."
               ],
               "parameters": [
                  {
                     "name": "image",
                     "type": "h_face_image",
                     "io": "in",
                     "doc": "Source image to process."
                  },
                  {
                     "name": "enhanced_image",
                     "type": "h_face_image",
                     "io": "out",
                     "doc": "The enhanced face."
                  }
               ]
            }
         ]
      },
      {
         "name": "face_candidate",
         "doc": [
            "Represents a candidate in a one-to-many search."
         ],
         "copyable": true,
         "functions": [],
         "members": [
            {
               "name": "id",
               "type": "string",
               "default_value": "null",
               "setter": false,
               "doc": "ID of the most similar face template as defined in the reference face template list used to perform the search."
            },
            {
               "name": "score",
               "type": "int",
               "default_value": "0",
               "setter": false,
               "doc": "Match score between the face probe template and the most similar one in the reference face template list used to perform the search."
            }
         ]
      },
      {
         "name": "face_candidate_list",
         "doc": [
            "Represents a candidate list in a one-to-many search."
         ],
         "copyable": true,
         "list": true,
         "base_module_type": "h_face_face_candidate"
      },
      {
         "name": "face_detector",
         "doc": [
            "Detects human faces in images."
         ],
         "members": [
            {
               "name": "confidence_threshold",
               "type": "int",
               "default_value": "50",
               "setter": true,
               "doc": [
                  "Confidence threshold, in the range [0;100].",
                  "Hint: Default value is 50.",
                  "Note: Setting a high threshold reduces false detection but can increase the number of undetected faces."
               ]
            },
            {
               "name": "model",
               "type": "e_face_face_model",
               "default_value": "face_detector_4a",
               "setter": true,
               "doc": [
                  "Model used to detect and track faces.",
                  "Hint: Default value is FaceDetector4A which is the best available algorithm in this SDK in terms of accuracy. Some better accuracy/speed balances can be found by choosing another model."
               ]
            },
            {
               "name": "nms_iou_threshold",
               "type": "int",
               "default_value": "40",
               "setter": true,
               "doc": [
                  "Non-maximum suppression (NMS) intersection-over-union (IOU) threshold, in the range is [0;100].",
                  "Hint: Default value is 40.",
                  "Note: Setting a high threshold allows to detect more overlapping faces which can be useful in a multi-face scenario. On the contrary, in a portrait scenario, a low NMS IOU threshold should be preferred."
               ]
            },
            {
               "name": "processing_unit",
               "type": "e_face_processing_unit",
               "default_value": "cpu",
               "setter": true,
               "doc": [
                  "Processing unit where to run the detection process.",
                  "Hint: Default value is CPU."
               ]
            },
            {
               "name": "thread_count",
               "type": "int",
               "default_value": "1",
               "setter": true,
               "doc": [
                  "Number of threads to be used for face detection.",
                  "Hint: Default value is 1. Allocating more than one thread can increase the speed of the process."
               ]
            }
         ],
         "functions": [
            {
               "name": "warm_up",
               "doc": [
                  "Gets the face detector module ready to work on a specific image size by initializing all its internal memory layout.",
                  "This function can be called after setting all the parameters of the face detector module if the image size is fixed, for example using frames from a video stream.",
                  "Calling this function is not mandatory as the internal memory layout is automatically initialized in the first call to detectFaces() or trackFaces() if missing.",
                  "Important: Loading a ``FaceDetector`` model is required to use this function."
               ],
               "parameters": [
                  {
                     "name": "image_width",
                     "type": "int",
                     "io": "in",
                     "doc": "Width of the expected image size."
                  },
                  {
                     "name": "image_height",
                     "type": "int",
                     "io": "in",
                     "doc": "Height of expected image size."
                  }
               ]
            },
            {
               "name": "detect_faces",
               "doc": [
                  "Detects faces in an image and store their info in a DetectedFaceList object.",
                  "Note: The algorithm searches for faces in the range [16px;512px]. If the image is too large to fit this range, one must resize it before the detection process.",
                  "Important: Loading a ``FaceDetector`` model is required to use this function."
               ],
               "parameters": [
                  {
                     "name": "image",
                     "type": "h_face_image",
                     "io": "in",
                     "doc": "Source image to process."
                  },
                  {
                     "name": "detected_face_list",
                     "type": "h_face_detected_face_list",
                     "io": "out",
                     "doc": "The list of detected faces."
                  }
               ]
            },
            {
               "name": "track_faces",
               "doc": [
                  "Tracks faces in an image and update their info in a DetectedFaceList object.",
                  "In a realtime process, one must use this function instead of DetectFaces() to keep the face IDs stable in time.",
                  "Note: The algorithm searches for faces in the range [16px;512px]. If the image is too large to fit this range, one must resize it before the detection process.",
                  "Important: Loading a ``FaceDetector`` model is required to use this function.",
                  "Warning: This function is deprecated: use the FaceTracker module instead."
               ],
               "parameters": [
                  {
                     "name": "image",
                     "type": "h_face_image",
                     "io": "in",
                     "doc": "Source image to process."
                  },
                  {
                     "name": "detected_face_list",
                     "type": "h_face_detected_face_list",
                     "io": "in",
                     "doc": "List of detected faces."
                  }
               ]
            }
         ]
      },
      {
         "name": "face_encoder",
         "doc": [
            "Extracts facial features and encodes face templates."
         ],
         "members": [
            {
               "name": "model",
               "type": "e_face_face_model",
               "default_value": "face_encoder_9a",
               "setter": true,
               "doc": [
                  "Model used to create templates.",
                  "Hint: Default value is FaceEncoder9A which is the best available algorithm in this SDK in terms of accuracy. Some better accuracy/speed balances can be found by choosing another model."
               ]
            },
            {
               "name": "processing_unit",
               "type": "e_face_processing_unit",
               "default_value": "cpu",
               "setter": true,
               "doc": [
                  "Processing unit where to run the encoding process.",
                  "Hint: Default value is CPU."
               ]
            },
            {
               "name": "thread_count",
               "type": "int",
               "default_value": "1",
               "setter": true,
               "doc": [
                  "Number of threads to be used for template encoding.",
                  "Hint: Default value is 1. Allocating more than one thread can increase the speed of the process."
               ]
            },
            {
               "name": "minimal_iod",
               "type": "int",
               "default_value": "30",
               "setter": true,
               "doc": [
                  "Minimal interocular distance (IOD) in pixels required to perform a face encoding.",
                  "Hint: Default value is 30 pixels. It is not recommended to change this value.",
                  "Warning: Reducing the minimal required IOD to encode smaller face images may create unreliable face templates and significantly degrade recognition performances."
               ]
            }
         ],
         "functions": [
            {
               "name": "compute_quality",
               "doc": [
                  "Computes the quality of a detected face.",
                  "Here, quality expresses the match capability of an image: a high quality image will generate less match errors (false acceptance or false rejection) than a low quality one.",
                  "Warning: A minimum interocular distance (IOD) of 30 pixels for the detected face is required for this function, below this value it will output an error.",
                  "Important: Loading the ``FaceEncodingQualityEstimator`` model is required to use this function."
               ],
               "parameters": [
                  {
                     "name": "image",
                     "type": "h_face_image",
                     "io": "in",
                     "doc": "Source image to process."
                  },
                  {
                     "name": "detected_face",
                     "type": "h_face_detected_face",
                     "io": "in",
                     "doc": "Detected face to process."
                  },
                  {
                     "name": "quality",
                     "type": "int",
                     "io": "out",
                     "doc": "The estimated quality of the detected face. Range is [0:100]."
                  }
               ]
            },
            {
               "name": "warm_up",
               "doc": [
                  "Gets the face encoder module ready to work by initializing all its internal memory layout.",
                  "This function can be called after setting all the parameters of the face encoder module.",
                  "Calling this function is not mandatory as the internal memory layout is automatically initialized in the first call to createTemplate() if missing.",
                  "Important: Loading a ``FaceEncoder`` is required to use this function."
               ],
               "parameters": []
            },
            {
               "name": "create_template",
               "doc": [
                  "Extracts the unique features of a detected face and store them in a FaceTemplate.",
                  "Warning: A minimum interocular distance (IOD) of 30 pixels for the detected face is required for this function, below this value it will output an error.",
                  "Important: Loading a ``FaceEncoder`` model is required to use this function."
               ],
               "parameters": [
                  {
                     "name": "image",
                     "type": "h_face_image",
                     "io": "in",
                     "doc": "Source image to process."
                  },
                  {
                     "name": "detected_face",
                     "type": "h_face_detected_face",
                     "io": "in",
                     "doc": "Detected face to process."
                  },
                  {
                     "name": "face_template",
                     "type": "h_face_face_template",
                     "io": "out",
                     "doc": "The generated face template."
                  }
               ]
            }
         ]
      },
      {
         "name": "face_license",
         "doc": "Handles the license to use this SDK.",
         "static": true,
         "inherits_from": "h_license_license"
      },
      {
         "name": "face_library",
         "doc": [
            "The FaceLibrary class serves as the entry point to the id3 Face SDK. It provides essential methods for initializing the SDK, managing face models, and accessing version information. This class must be utilized to leverage the facial recognition capabilities offered by the SDK."
         ],
         "static": true,
         "functions": [
            {
               "name": "load_model",
               "doc": "Loads a specified AI model into memory from the specified directory.",
               "type": "static",
               "parameters": [
                  {
                     "name": "model_path",
                     "type": "string",
                     "io": "in",
                     "doc": "The path to directory containing the AI model files."
                  },
                  {
                     "name": "face_model",
                     "type": "e_face_face_model",
                     "io": "in",
                     "doc": "The AI model to be loaded."
                  },
                  {
                     "name": "processing_unit",
                     "type": "e_face_processing_unit",
                     "io": "in",
                     "doc": "The processing unit to be used."
                  }
               ]
            },
            {
               "name": "load_model_buffer",
               "doc": "Loads a model into memory from the specified buffer.",
               "type": "static",
               "parameters": [
                  {
                     "name": "model_buffer",
                     "type": "unsigned char",
                     "array": true,
                     "io": "in",
                     "doc": "A buffer containing the AI model to be loaded."
                  },
                  {
                     "name": "face_model",
                     "type": "e_face_face_model",
                     "io": "in",
                     "doc": "The AI model to be loaded."
                  },
                  {
                     "name": "processing_unit",
                     "type": "e_face_processing_unit",
                     "io": "in",
                     "doc": "The processing unit to be used."
                  }
               ]
            },
            {
               "name": "unload_model",
               "doc": "Unloads a model from memory.",
               "type": "static",
               "parameters": [
                  {
                     "name": "face_model",
                     "type": "e_face_face_model",
                     "io": "in",
                     "doc": "The AI model to be unloaded."
                  },
                  {
                     "name": "processing_unit",
                     "type": "e_face_processing_unit",
                     "io": "in",
                     "doc": "The processing unit used for the model."
                  }
               ]
            },
            {
               "name": "get_version",
               "doc": "Retrieves the library version as a `X.Y.Z` formatted string.",
               "type": "static",
               "parameters": [
                  {
                     "name": "library_version",
                     "type": "string",
                     "io": "out",
                     "doc": "A string that identifies the library version.",
                     "init_size": "8"
                  }
               ]
            },
            {
               "name": "get_version_ex",
               "doc": "Retrieves the library version as a structure.",
               "type": "static",
               "parameters": [
                  {
                     "name": "version",
                     "type": "s_face_lib_version",
                     "io": "out",
                     "doc": "The version."
                  }
               ]
            },
            {
               "name": "get_model_file_name",
               "doc": "Retrieves the model file name which is needed in the LoadModel function.",
               "type": "static",
               "parameters": [
                  {
                     "name": "model",
                     "type": "e_face_face_model",
                     "io": "in",
                     "doc": "The Face Model to look for."
                  },
                  {
                     "name": "file_name",
                     "type": "string",
                     "io": "out",
                     "doc": "The expected file name"
                  }
               ]
            }
         ]
      },
      {
         "name": "face_matcher",
         "doc": [
            "Compares two face templates and searches for a face template in a list."
         ],
         "functions": [
            {
               "name": "compare_templates",
               "doc": "Compares two templates and outputs a comparison score.",
               "parameters": [
                  {
                     "name": "reference",
                     "type": "h_face_face_template",
                     "io": "in",
                     "doc": "Reference template."
                  },
                  {
                     "name": "probe",
                     "type": "h_face_face_template",
                     "io": "in",
                     "doc": "Probe template."
                  },
                  {
                     "name": "score",
                     "type": "int",
                     "io": "out",
                     "doc": "The comparison score, in the range [0;65535]."
                  }
               ]
            },
            {
               "name": "compare_template_lists",
               "doc": "Compares two template lists and outputs a comparison score.",
               "parameters": [
                  {
                     "name": "reference_list",
                     "type": "h_face_face_template_list",
                     "io": "in",
                     "doc": "Reference template list."
                  },
                  {
                     "name": "probe_list",
                     "type": "h_face_face_template_list",
                     "io": "in",
                     "doc": "Probe template list."
                  },
                  {
                     "name": "pooling_method",
                     "type": "e_face_pooling_method",
                     "io": "in",
                     "doc": "Pooling method applied during the match process."
                  },
                  {
                     "name": "score",
                     "type": "int",
                     "io": "out",
                     "doc": "The comparison score, in the range [0;65535]."
                  }
               ]
            },
            {
               "name": "search_template",
               "doc": "Performs a one-to-many search of a biometric probe against a previously initialized dictionary of biometric references and outputs a candidate list.",
               "parameters": [
                  {
                     "name": "reference_dict",
                     "type": "h_face_face_template_dict",
                     "io": "in",
                     "doc": "Reference template dictionary."
                  },
                  {
                     "name": "probe",
                     "type": "h_face_face_template",
                     "io": "in",
                     "doc": "Probe template."
                  },
                  {
                     "name": "max_candidates",
                     "type": "int",
                     "io": "in",
                     "doc": "Maximum number of candidates to output."
                  },
                  {
                     "name": "candidate_list",
                     "type": "h_face_face_candidate_list",
                     "io": "in",
                     "doc": "List of candidates sorted by decreasing match score."
                  }
               ]
            }
         ]
      },
      {
         "name": "face_pad",
         "doc": [
            "Detects presentation attacks in still images or video frames."
         ],
         "members": [
            {
               "name": "attack_support_detector_confidence_threshold",
               "type": "int",
               "default_value": "25",
               "setter": true,
               "doc": [
                  "Attack support detector confidence threshold, in the range [0;100].",
                  "Hint: Default value is 25.",
                  "Note: Setting a high threshold reduces false attack support detections but can increase the number of undetected attack supports."
               ]
            }
         ],
         "functions": [
            {
               "name": "compute_blurriness_score",
               "doc": [
                  "Computes a blurriness score for a color image.",
                  "An attack presented on a low resolution support has more chance to be blurred than a bonafide.",
                  "The maximum recommended value is 20.",
                  "Important: Loading the model ``FaceBlurrinessDetector`` is required to use this function."
               ],
               "parameters": [
                  {
                     "name": "image",
                     "type": "h_face_image",
                     "io": "in",
                     "doc": "Source image to process."
                  },
                  {
                     "name": "detected_face",
                     "type": "h_face_detected_face",
                     "io": "in",
                     "doc": "Detected face to process."
                  },
                  {
                     "name": "score",
                     "type": "int",
                     "io": "out",
                     "doc": "The computed blurriness score, in the range [0;100]."
                  }
               ]
            },
            {
               "name": "compute_color_based_score",
               "doc": [
                  "Computes the PAD score and confidence of a detected face using only the color image.",
                  "A high score means a high probability for the face to be bona-fide, hence not an attack. The minimum recommended score is 90.",
                  "A low confidence means that the quality of the image is not sufficient enough to take a decision. The minimum recommended confidence is 70.",
                  "Warning: A minimum IOD (64 pixels per default) for the detected face is required for this function, below this value it will output an error.",
                  "Important: Loading the ``FaceColorBasedPad`` model is required to use this function."
               ],
               "parameters": [
                  {
                     "name": "image",
                     "type": "h_face_image",
                     "io": "in",
                     "doc": "Source image to process."
                  },
                  {
                     "name": "detected_face",
                     "type": "h_face_detected_face",
                     "io": "in",
                     "doc": "Detected face to process."
                  },
                  {
                     "name": "color_based_pad_result",
                     "type": "s_face_color_based_pad_result",
                     "io": "out",
                     "doc": "The computed PAD result including score and confidence."
                  }
               ]
            },
            {
               "name": "compute_depth_based_score",
               "doc": [
                  "Computes the PAD score of a detected face using a depth map image.",
                  "A high score means a high probability for the face to be bona-fide, hence not an attack.",
                  "The minimum recommended value is 10.",
                  "Important: Loading the ``FaceDepthBasedPad`` model is required to use this function."
               ],
               "parameters": [
                  {
                     "name": "image",
                     "type": "h_face_image",
                     "io": "in",
                     "doc": "Source image to process. Must be Grayscale 16 Bits."
                  },
                  {
                     "name": "detected_face",
                     "type": "h_face_detected_face",
                     "io": "in",
                     "doc": "Detected face to process."
                  },
                  {
                     "name": "score",
                     "type": "int",
                     "io": "out",
                     "doc": "The computed PAD score, in the range [0;100]."
                  }
               ]
            },
            {
               "name": "detect_attack_support",
               "doc": [
                  "Detects if an attack support surrounds the detected face.",
                  "The recommended usage is to consider the image to be an attack as soon as an attack support is detected.",
                  "Important: Loading the ``FaceAttackSupportDetector`` model is required to use this function."
               ],
               "parameters": [
                  {
                     "name": "image",
                     "type": "h_face_image",
                     "io": "in",
                     "doc": "Source image to process."
                  },
                  {
                     "name": "detected_face",
                     "type": "h_face_detected_face",
                     "io": "in",
                     "doc": "Detected face to process."
                  },
                  {
                     "name": "detected_face_attack_support",
                     "type": "s_face_detected_face_attack_support",
                     "io": "out",
                     "doc": "The detected face attack support."
                  }
               ]
            }
         ]
      },
      {
         "name": "face_template",
         "doc": [
            "Represents a face template."
         ],
         "copyable": true,
         "members": [
            {
               "name": "format",
               "type": "e_face_face_template_format",
               "default_value": "undefined",
               "setter": false,
               "doc": "Format of the face template."
            },
            {
               "name": "quality",
               "type": "int",
               "default_value": "-1",
               "setter": false,
               "doc": "Quality of the face template."
            }
         ],
         "functions": [
            {
               "name": "from_buffer",
               "doc": "Imports the face template object from a buffer.",
               "type": "constructor",
               "parameters": [
                  {
                     "name": "data",
                     "type": "unsigned char",
                     "array": true,
                     "io": "in",
                     "doc": "Buffer to import the face template object from."
                  }
               ]
            },
            {
               "name": "from_file",
               "doc": "Imports the face template object from a file.",
               "type": "constructor",
               "parameters": [
                  {
                     "name": "path",
                     "type": "string",
                     "io": "in",
                     "doc": "Path to the file to import the face template object from."
                  }
               ]
            },
            {
               "name": "to_file",
               "doc": "Exports the face template object to a file.",
               "parameters": [
                  {
                     "name": "path",
                     "type": "string",
                     "io": "in",
                     "doc": "Path to the file to export the face template object to."
                  }
               ]
            },
            {
               "name": "to_buffer",
               "doc": "Exports the face template object to a buffer.",
               "parameters": [
                  {
                     "name": "data",
                     "type": "unsigned char",
                     "array": true,
                     "io": "out",
                     "doc": "The buffer that receives the face template.",
                     "init_size": null
                  }
               ]
            },
            {
               "name": "to_bdt",
               "doc": [
                  "Exports the face template object to a Biometric Data Template (BDT) buffer.",
                  "This buffer can only be used with id3 Face Match on Card specific implementations to verify a face template."
               ],
               "parameters": [
                  {
                     "name": "data",
                     "type": "unsigned char",
                     "array": true,
                     "io": "out",
                     "doc": "A buffer that receives the biometric data template.",
                     "init_size": null
                  }
               ]
            },
            {
               "name": "to_bit",
               "doc": [
                  "Exports the face template as a Biometric Information Template (BIT) for enrolment on a smart card equipped with id3 Match-on-Card technology.",
                  "Note: The threshold value is required and should be set according to the used Face Encoder and desired security level.",
                  "Important: The reference data qualifier (RDQ) should be defined in accordance with the smart card application specifications."
               ],
               "parameters": [
                  {
                     "name": "threshold",
                     "type": "int",
                     "io": "in",
                     "doc": "The decision threshold, from 0 to 653535, to be applied during the face comparison on the smart card. See FaceMatcherThreshold for a list of typical values.",
                     "init_size": null
                  },
                  {
                     "name": "reference_data_qualifier",
                     "type": "int",
                     "io": "in",
                     "doc": "Reference data qualifier.",
                     "init_size": null
                  },
                  {
                     "name": "data",
                     "type": "unsigned char",
                     "array": true,
                     "io": "out",
                     "doc": "A buffer that receives the biometric information template.",
                     "init_size": null
                  }
               ]
            },
            {
               "name": "update",
               "doc": "Updates the face template by combining it with the specified face template.",
               "parameters": [
                  {
                     "name": "new_face_template",
                     "type": "h_face_face_template",
                     "io": "in",
                     "doc": "New face template to combine."
                  }
               ]
            }
         ]
      },
      {
         "name": "string_list",
         "doc": [
            "Represents a list of strings."
         ],
         "list": true,
         "base_module_type": "string",
         "copyable": false
      },
      {
         "name": "face_template_dict",
         "doc": [
            "Represents a dictionary of face templates."
         ],
         "copyable": true,
         "dict": true,
         "base_module_type": "h_face_face_template",
         "keys": "h_face_string_list"
      },
      {
         "name": "face_template_list",
         "doc": [
            "Represents a list of face templates."
         ],
         "copyable": true,
         "list": true,
         "base_module_type": "h_face_face_template"
      },
      {
         "name": "face_indexer",
         "doc": [
            "Performs a one-to-many search on a large number of face templates."
         ],
         "members": [
            {
               "name": "maximum_template_count",
               "type": "int",
               "default_value": "0",
               "setter": false,
               "doc": "Maximum number of templates that this face indexer can hold."
            },
            {
               "name": "template_count",
               "type": "int",
               "default_value": "0",
               "setter": false,
               "doc": "Current number of indexed templates."
            },
            {
               "name": "format",
               "type": "e_face_face_template_format",
               "default_value": "undefined",
               "setter": false,
               "doc": "Face template format accepted by this face indexer."
            }
         ],
         "functions": [
            {
               "name": "create",
               "doc": "Creates an empty face indexer",
               "type": "constructor",
               "parameters": [
                  {
                     "name": "maximum_template_count",
                     "type": "int",
                     "io": "in",
                     "doc": "Maximum number of templates that this face indexer can hold."
                  },
                  {
                     "name": "format",
                     "type": "e_face_face_template_format",
                     "io": "in",
                     "doc": "Face template format accepted by this face indexer."
                  }
               ]
            },
            {
               "name": "from_file",
               "doc": "Imports the face indexer object from a file.",
               "type": "constructor",
               "parameters": [
                  {
                     "name": "path",
                     "type": "string",
                     "io": "in",
                     "doc": "Path to the file to import the face indexer object from."
                  }
               ]
            },
            {
               "name": "to_file",
               "doc": "Saves the face indexer object to a file.",
               "parameters": [
                  {
                     "name": "path",
                     "type": "string",
                     "io": "in",
                     "doc": "Path to the file to export the face indexer object to."
                  }
               ]
            },
            {
               "name": "add_template",
               "doc": [
                  "Adds a template to the Face Indexer.",
                  "Note: This function is thread safe with other AddTemplate() calls but not with SearchTemplates() calls."
               ],
               "parameters": [
                  {
                     "name": "face_template",
                     "type": "h_face_face_template",
                     "io": "in",
                     "doc": "Face template to add to the face indexer."
                  },
                  {
                     "name": "id",
                     "type": "string",
                     "io": "in",
                     "doc": "ID of the added face template."
                  }
               ]
            },
            {
               "name": "get_template",
               "doc": "Retrieves a template from the face indexer by ID.",
               "parameters": [
                  {
                     "name": "id",
                     "type": "string",
                     "io": "in",
                     "doc": "ID of the required face template."
                  },
                  {
                     "name": "face_template",
                     "type": "h_face_face_template",
                     "io": "out",
                     "doc": "The face template."
                  }
               ]
            },
            {
               "name": "delete_template",
               "doc": "Deletes a template from the face indexer.",
               "parameters": [
                  {
                     "name": "id",
                     "type": "string",
                     "io": "in",
                     "doc": "ID of the face template to delete."
                  }
               ]
            },
            {
               "name": "resize",
               "doc": "Resizes the maximum number of templates that the face indexer can hold.",
               "parameters": [
                  {
                     "name": "maximum_count",
                     "type": "int",
                     "io": "in",
                     "doc": "Maximum number of templates that this face indexer can hold."
                  }
               ]
            },
            {
               "name": "search_template",
               "doc": [
                  "Performs a one-to-many search of a face template probe against a previously initialized face indexer and outputs a candidate list.",
                  "This function is thread safe with other SearchTemplate() calls but not with AddTemplate() calls."
               ],
               "parameters": [
                  {
                     "name": "probe",
                     "type": "h_face_face_template",
                     "io": "in",
                     "doc": "The face template probe."
                  },
                  {
                     "name": "max_candidates",
                     "type": "int",
                     "io": "in",
                     "doc": "Maximum number of candidates in the candidate list."
                  },
                  {
                     "name": "candidates",
                     "type": "h_face_face_candidate_list",
                     "io": "out",
                     "doc": "The list of candidates sorted by decreasing match score."
                  }
               ]
            }
         ]
      },
      {
         "name": "face_tracker",
         "doc": "Tracks faces on consecutive images and automatically creates and updates associated face templates.",
         "members": [
            {
               "name": "confidence_threshold",
               "type": "int",
               "default_value": "50",
               "setter": true,
               "doc": [
                  "Confidence threshold, in the range [0;100].",
                  "Hint: Default value is 50.",
                  "Note: Setting a high threshold reduces false detection but can increase the number of undetected faces."
               ]
            },
            {
               "name": "detection_model",
               "type": "e_face_face_model",
               "default_value": "face_detector_4b",
               "setter": true,
               "doc": [
                  "Model used to detect and track faces.",
                  "Hint: Default value is FaceDetector4B.",
                  "Note: Some better accuracy/speed balances can be found by choosing another model."
               ]
            },
            {
               "name": "encoding_model",
               "type": "e_face_face_model",
               "default_value": "face_encoder_9b",
               "setter": true,
               "doc": [
                  "Model used to create features and assess consistancy among views of a given face.",
                  "Hint: Default value is FaceEncoder9B. Some better accuracy/speed balances can be found by choosing another model."
               ]
            },
            {
               "name": "match_threshold",
               "type": "int",
               "default_value": "3000",
               "setter": true,
               "doc": [
                  "Minimum match score to reach to preserve the ID of a tracked face between frame 't-1' and frame 't'.",
                  "Hint: Default value is 3000 which corresponds to a False Match Rate of 1/1000."
               ]
            },
            {
               "name": "maximum_tracked_face_age",
               "type": "int",
               "default_value": "30",
               "setter": true,
               "doc": [
                  "Maximum number of consecutive non-detections to reach before deleting a tracked face.",
                  "Hint: Default value is 30 which corresponds to 2s at a frame rate of 15 FPS. One must adapt this value to its needs in terms of tracker identity memory (in seconds) and measured frame rate on target platform."
               ]
            },
            {
               "name": "minimum_tracked_face_age",
               "type": "int",
               "default_value": "1",
               "setter": true,
               "doc": [
                  "Minimum number of consecutive detections to reach before creating a tracked face.",
                  "Hint: Default value is 1 for FaceDetector4B since the false detection rate is low enough. If using a less accurate detector (such as FaceDetector3C) one might consider increasing a bit this value to avoid false tracks."
               ]
            },
            {
               "name": "nms_iou_threshold",
               "type": "int",
               "default_value": "40",
               "setter": true,
               "doc": [
                  "Non-maximum suppression (NMS) intersection-over-union (IOU) threshold, in the range is [0;100].",
                  "Hint: Default value is 40. Setting a high threshold allows to detect more overlapping faces which can be useful in a multi-face scenario. On the contrary, in a portrait scenario, a low NMS IOU threshold should be preferred."
               ]
            },
            {
               "name": "thread_count",
               "type": "int",
               "default_value": "1",
               "setter": true,
               "doc": [
                  "Number of threads to be used for face detection and tracking.",
                  "Hint: Default value is 1. Allocating more than one thread can increase the speed of the process."
               ]
            }
         ],
         "functions": [
            {
               "name": "warm_up",
               "doc": [
                  "Gets the face tracker module ready to work on a specific image size by initializing all its internal memory layout.",
                  "This function can be called after setting all the parameters of the face detector module if the image size is fixed, for example using frames from a video stream.",
                  "Calling this function is not mandatory as the internal memory layout is automatically initialized in the first call to detectFaces() or trackFaces() if missing.",
                  "Important: Loading a ``FaceDetector`` model is required to use this function."
               ],
               "parameters": [
                  {
                     "name": "image_width",
                     "type": "int",
                     "io": "in",
                     "doc": "Width of the expected image size."
                  },
                  {
                     "name": "image_height",
                     "type": "int",
                     "io": "in",
                     "doc": "Height of expected image size."
                  }
               ]
            },
            {
               "name": "detect_faces",
               "doc": [
                  "Detects faces in an image and update their info in a TrackedFaceList object.",
                  "The algorithm searches for faces in the range [16px;512px]. If the image is too large to fit this range, one must resize it before the tracking process.",
                  "In a realtime process, one must use this function to keep the face IDs stable in time.",
                  "Important: Loading a ``FaceDetector`` is required to use this function."
               ],
               "parameters": [
                  {
                     "name": "image",
                     "type": "h_face_image",
                     "io": "in",
                     "doc": "Source image to process."
                  },
                  {
                     "name": "tracked_face_list",
                     "type": "h_face_tracked_face_list",
                     "io": "in",
                     "doc": "List of tracked faces."
                  }
               ]
            },
            {
               "name": "track_faces",
               "doc": [
                  "Tracks faces in an image and update their info in a TrackedFaceList object.",
                  "The algorithm searches for faces in the range [16px;512px]. If the image is too large to fit this range, one must resize it before the tracking process.",
                  "In a realtime process, one must use this function to keep the face IDs stable in time.",
                  "Important: Loading a ``FaceDetector`` and a ``FaceEncoder`` model is required to use this function."
               ],
               "parameters": [
                  {
                     "name": "image",
                     "type": "h_face_image",
                     "io": "in",
                     "doc": "Source image to process."
                  },
                  {
                     "name": "tracked_face_list",
                     "type": "h_face_tracked_face_list",
                     "io": "in",
                     "doc": "List of tracked faces."
                  }
               ]
            }
         ]
      },
      {
         "name": "tracked_face_list",
         "doc": [
            "Represents a list of tracked faces."
         ],
         "copyable": true,
         "list": true,
         "base_module_type": "h_face_tracked_face",
         "members": [],
         "functions": [
            {
               "name": "find_tracked_face",
               "doc": "Finds a tracked face by ID.",
               "parameters": [
                  {
                     "name": "id",
                     "type": "int",
                     "io": "in",
                     "doc": "ID of the tracked face to find in the list."
                  },
                  {
                     "name": "tracked_face",
                     "type": "h_face_tracked_face",
                     "io": "out",
                     "doc": "The found tracked face."
                  }
               ]
            },
            {
               "name": "get_id_list",
               "doc": "Gets the list of IDs in the list.",
               "parameters": [
                  {
                     "name": "ids",
                     "type": "int",
                     "array": true,
                     "io": "out",
                     "doc": "The list of IDs in the list."
                  }
               ]
            },
            {
               "name": "get_largest_face",
               "doc": "Gets the largest face in the list.",
               "parameters": [
                  {
                     "name": "largest_face",
                     "type": "h_face_tracked_face",
                     "io": "out",
                     "doc": "The largest tracked face in the list."
                  }
               ]
            },
            {
               "name": "rescale_all",
               "doc": "Rescales all tracked faces in the list.",
               "parameters": [
                  {
                     "name": "scale",
                     "type": "float",
                     "io": "in",
                     "doc": "Scale factor to apply. Range is [0;+inf[."
                  }
               ]
            }
         ]
      },
      {
         "name": "portrait",
         "doc": [
            "Represents a portrait."
         ],
         "copyable": true,
         "members": [
            {
               "name": "status",
               "type": "portrait_status",
               "default_value": "undefined",
               "doc": "Status of the portrait."
            },
            {
               "name": "instruction",
               "type": "portrait_instruction",
               "default_value": "none",
               "doc": "Instruction to be given to the user for portrait capture."
            },
            {
               "name": "face_id",
               "type": "int",
               "default_value": "0",
               "doc": "Unique face ID."
            },
            {
               "name": "face_template",
               "type": "face_template",
               "nullable": true,
               "cpp_decl": false,
               "doc": "Face template."
            },
            {
               "name": "tracked_face",
               "type": "h_face_tracked_face",
               "nullable": true,
               "default_value": "null",
               "doc": "Tracked face."
            },
            {
               "name": "image",
               "type": "h_face_image",
               "nullable": true,
               "default_value": "null",
               "doc": "Source image."
            },
            {
               "name": "pose",
               "type": "s_face_face_pose",
               "default_value": "{}",
               "doc": "Face pose."
            },
            {
               "name": "landmarks",
               "type": "h_face_point_list",
               "default_value": "{}",
               "doc": "68-points landmarks."
            },
            {
               "name": "age",
               "type": "int",
               "default_value": "-1",
               "doc": "Estimated age of the subject. -1 if not computed."
            },
            {
               "name": "expression",
               "type": "e_face_face_expression",
               "default_value": "unknown",
               "doc": "Estimated expression of the subject (angriness, disgust, fear, happiness, sadness, surprise, or neutral). Unknown if not computed."
            },
            {
               "name": "eye_gaze",
               "type": "s_face_eye_gaze",
               "default_value": "{}",
               "doc": "Estimated gaze."
            },
            {
               "name": "image_center",
               "type": "s_face_point",
               "default_value": "{}",
               "doc": "Center of the portrait in the source image."
            },
            {
               "name": "image_scale",
               "type": "float",
               "default_value": "1.0",
               "doc": "Scale to be applied to the source image to display the portrait."
            },
            {
               "name": "image_translation",
               "type": "s_face_point",
               "default_value": "{}",
               "doc": "Translation to be applied to the source image to display the portrait."
            },
            {
               "name": "left_eye_opening",
               "type": "int",
               "default_value": "-1",
               "doc": "Value estimating the opening of the left eye. -1 if not computed. The range is 0-100, 100 meaning the eye is fully opened."
            },
            {
               "name": "right_eye_opening",
               "type": "int",
               "default_value": "-1",
               "doc": "Value estimating the opening of the left eye. -1 if not computed. The range is 0-100, 100 meaning the eye is fully opened."
            },
            {
               "name": "face_mask",
               "type": "int",
               "default_value": "-1",
               "doc": "Value indicating whether a face mask is detected. The range is 0-100, 100 meaning a mask is detected."
            },
            {
               "name": "gender_male",
               "type": "int",
               "default_value": "-1",
               "doc": "Value indicating whether the subject is a male. -1 if not computed. The range is 0 (female) -100 (male)."
            },
            {
               "name": "geometric_attributes",
               "type": "s_face_geometric_attributes",
               "default_value": "{}",
               "doc": "Geometric attributes."
            },
            {
               "name": "glasses",
               "type": "int",
               "default_value": "-1",
               "doc": "Value indicating whether the subject wears glasses. -1 if not computed. The range is 0-100, 100 meaning glasses are detected."
            },
            {
               "name": "hat",
               "type": "int",
               "default_value": "-1",
               "doc": "Value indicating whether the subject wears a hat. -1 if not computed. The range is 0-100, 100 meaning a hat is detected."
            },
            {
               "name": "makeup",
               "type": "int",
               "default_value": "-1",
               "doc": "Value indicating whether makeup is detected. -1 if not computed. The range is 0-100, 100 meaning makeup is detected."
            },
            {
               "name": "mouth_opening",
               "type": "int",
               "default_value": "-1",
               "doc": "Value indicating estimating the opening of the mouth. -1 if not computed. The range is 0-100, 100 meaning the mouth is fully open."
            },
            {
               "name": "mouth_visibility",
               "type": "int",
               "default_value": "-1",
               "doc": "Value estimating the visibility of the mouth. -1 if not computed. The range is 0-100, 100 meaning the mouth is fully visible."
            },
            {
               "name": "left_eye_visibility",
               "type": "int",
               "default_value": "-1",
               "doc": "Value estimating the visibility of the left eye. -1 if not computed. The range is 0-100, 100 meaning the left eye is fully visible."
            },
            {
               "name": "right_eye_visibility",
               "type": "int",
               "default_value": "-1",
               "doc": "Value estimating the visibility of the right eye. -1 if not computed. The range is 0-100, 100 meaning the right eye is fully visible."
            },
            {
               "name": "nose_visibility",
               "type": "int",
               "default_value": "-1",
               "doc": "Value estimating the visibility of the nose. -1 if not computed. The range is 0-100, 100 meaning the nose is fully visible."
            },
            {
               "name": "pad_score",
               "type": "int",
               "default_value": "0",
               "doc": "Score of the presentation attack detection."
            },
            {
               "name": "pad_status",
               "type": "e_face_pad_status",
               "default_value": "unknown",
               "doc": "Status of the presentation attack detection."
            },
            {
               "name": "photographic_attributes",
               "type": "s_face_photographic_attributes",
               "default_value": "{}",
               "doc": "Photographic attributes."
            },
            {
               "name": "smile",
               "type": "int",
               "default_value": "-1",
               "doc": "Value indicating whether the subject is smiling. -1 if not computed. The range is 0-100, 100 meaning the person is smiling."
            },
            {
               "name": "background_uniformity",
               "type": "s_face_background_uniformity",
               "default_value": "{}",
               "doc": "Result of the background uniformity computation."
            },
            {
               "name": "subject_position",
               "type": "e_face_subject_position",
               "default_value": "undefined",
               "doc": "Position of the subject in the image."
            },
            {
               "name": "quality_checkpoints",
               "type": "portrait_quality_checkpoints",
               "default_value": "{}",
               "doc": "Quality check points of the portrait."
            },
            {
               "name": "quality_score",
               "type": "int",
               "default_value": "-1",
               "doc": "Unified quality score, from 0 to 100. -1 if not computed."
            },
            {
               "name": "look_straight_score",
               "type": "int",
               "default_value": "-1",
               "doc": "Value estimating if the user is looking straight towards the camera. -1 if not computed. The range is 0-100, 100 meaning the look is straight."
            }
      ],
         "functions": [
            {
               "name": "clear",
               "doc": "Clears all attributes.",
               "parameters": []
            },
            {
               "name": "from_buffer",
               "doc": "Imports the portrait object from a buffer.",
               "type": "constructor",
               "parameters": [
                  {
                     "name": "data",
                     "type": "unsigned char",
                     "array": true,
                     "io": "in",
                     "doc": "Buffer to import the portrait object from."
                  }
               ]
            },
            {
               "name": "to_buffer",
               "doc": "Exports the portrait to a buffer.",
               "parameters": [
                  {
                     "name": "data",
                     "type": "unsigned char",
                     "array": true,
                     "io": "out",
                     "doc": "The buffer to which the portrait object is exported.",
                     "init_size": null
                  }
               ]
            }
         ]
      },
      {
         "name": "portrait_processor",
         "doc": "Facilitates the creation of portraits in various scenarios such as enrolment or face verification.",
         "members": [
            {
               "name": "face_detection_model",
               "type": "e_face_face_model",
               "default_value": "face_detector_4b",
               "setter": true,
               "doc": [
                  "Specifies the model used to detect and track faces.",
                  "Hint: Default value is ``FaceDetector4B``. Some better accuracy/speed balances can be found by choosing another model."
               ]
            },
            {
               "name": "face_detection_image_size",
               "type": "int",
               "default_value": "256",
               "setter": true,
               "doc": [
                  "The size, in pixels, of the downscaled image used for face detection.",
                  "Hint: Default value is 256. Low values tend to ignore small faces in the input image, while higher values tend to take longer to process."
               ]
            },
            {
               "name": "face_detection_threshold",
               "type": "int",
               "default_value": "50",
               "setter": true,
               "doc": [
                  "Specifies the face detection confidence threshold, in the range is [0;100].",
                  "Hint: Default value is 50. Setting a high threshold reduces false detections but may increase the number of undetected faces."
               ]
            },
            {
               "name": "face_encoding_model",
               "type": "e_face_face_model",
               "default_value": "face_encoder_9b",
               "setter": true,
               "doc": [
                  "Model used to create features and assess consistancy among views of a given face.",
                  "Hint: Default value is ``FaceEncoder9B``. Some better accuracy/speed balances can be found by choosing another model."
               ]
            },
            {
               "name": "tracker_matching_threshold",
               "type": "int",
               "default_value": "3000",
               "setter": true,
               "doc": [
                  "Minimum match score to reach to preserve the ID of a tracked face between frame 't-1' and frame 't'.",
                  "Hint: Default value is 3000 which corresponds to a False Match Rate of 1/1000."
               ]
            },
            {
               "name": "tracker_maximum_face_age",
               "type": "int",
               "default_value": "2",
               "setter": true,
               "doc": [
                  "Maximum number of consecutive non-detections to be reached before deleting a tracked face.",
                  "Hint: Default value is 2. One must adapt this value to its needs in terms of tracker identity memory (in seconds) and measured frame rate on target platform."
               ]
            },
            {
               "name": "tracker_minimum_face_age",
               "type": "int",
               "default_value": "1",
               "setter": true,
               "doc": [
                  "Minimum number of consecutive detections to reach before creating a tracked face.",
                  "Hint: Default value is 1 for ``FaceDetector4B`` since the false detection rate is low enough. If using a less accurate detector (such as FaceDetector3C) one might consider increasing a bit this value to avoid false tracks. "
               ]
            },
            {
               "name": "tracker_nms_iou_threshold",
               "type": "int",
               "default_value": "0",
               "setter": true,
               "doc": [
                  "Non-maximum suppression (NMS) intersection-over-union (IOU) threshold, in the range [0;100].",
                  "Hint: Default value is 0. Setting a high threshold allows to detect more overlapping faces which can be useful in a multi-face scenario. On the contrary, in a portrait scenario, a low NMS IOU threshold should be preferred."
               ]
            },
            {
               "name": "thread_count",
               "type": "int",
               "default_value": "1",
               "setter": true,
               "doc": [
                  "Number of threads to be used for portrait processing.",
                  "Hint: Default value is 1. Allocating more than one thread can increase the speed of the process."
               ]
            },
            {
               "name": "background_color_uniformity_threshold",
               "type": "int",
               "default_value": "80",
               "setter": true,
               "doc": [
                  "Background color uniformity threshold.",
                  "If the score is above this value, the background color of the image is definitely uniform.",
                  "Hint: Default value is 80."
               ]
            },
            {
               "name": "background_structure_uniformity_threshold",
               "type": "int",
               "default_value": "80",
               "setter": true,
               "doc": [
                  "Background structure uniformity threshold.",
                  "If the score is above this value, the background structure of the image is definitely uniform.",
                  "Hint: Default value is 80."
               ]
            },
            {
               "name": "expression_sensibility",
               "type": "int",
               "default_value": "60",
               "setter": true,
               "doc": [
                  "Sensibility of the expression classifier.",
                  "The higher the value, the more sensitive the algorithm will be, meaning that it will be less likely to estimate neutral expression out of the detected face.",
                  "Hint: Default value is 60."
               ]
            },
            {
               "name": "eye_opening_threshold",
               "type": "int",
               "default_value": "5",
               "setter": true,
               "doc": [
                  "Eye opening threshold.",
                  "If the score is above this value, the eyes are definitely open.",
                  "Hint: Default value is 5."
               ]
            },
            {
               "name": "eye_occlusion_threshold",
               "type": "int",
               "default_value": "80",
               "setter": true,
               "doc": [
                  "Visible eye threshold.",
                  "If the score is above this value, the eye is probably occluded.",
                  "Hint: Default value 80."
               ]
            },
            {
               "name": "face_mask_threshold",
               "type": "int",
               "default_value": "35",
               "setter": true,
               "doc": [
                  "Face mask detection threshold.",
                  "If the detection score is above this value, the person is probably wearing a mask.",
                  "Hint: Default value is 35."
               ]
            },
            {
               "name": "glasses_threshold",
               "type": "int",
               "default_value": "90",
               "setter": true,
               "doc": [
                  "Glasses detection threshold.",
                  "If the score is above this value, the person is probably wearing glasses.",
                  "Hint: Default value 90."
               ]
            },
            {
               "name": "hat_threshold",
               "type": "int",
               "default_value": "98",
               "setter": true,
               "doc": [
                  "Threshold for confirming that the person is wearing a hat.",
                  "Hint: Default value is 98."
               ]
            },
            {
               "name": "makeup_threshold",
               "type": "int",
               "default_value": "50",
               "setter": true,
               "doc": [
                  "Make-up detection threshold.",
                  "If the detection score is above this value, the persone is definitely wearing make-up.",
                  "Hint: Default value 50."
               ]
            },
            {
               "name": "maximum_eye_gaze_x",
               "type": "int",
               "default_value": "10",
               "setter": true,
               "doc": [
                  "Maximum value of the eye gaze alongside the X axis.",
                  "Hint: Default value is 10."
               ]
            },
            {
               "name": "maximum_eye_gaze_y",
               "type": "int",
               "default_value": "10",
               "setter": true,
               "doc": [
                  "Maximum value of the eye gaze alongside the Y axis.",
                  "Hint: Default value is 10."
               ]
            },
            {
               "name": "mouth_open_threshold",
               "type": "int",
               "default_value": "35",
               "setter": true,
               "doc": [
                  "Mouth opening threshold.",
                  "If the mouth opening score is above this value, the mouth of detected face is definitely open.",
                  "Hint: Default value is 35."
               ]
            },
            {
               "name": "mouth_occlusion_threshold",
               "type": "int",
               "default_value": "70",
               "setter": true,
               "doc": [
                  "Mouth occlusion threshold. ",
                  "If the mouth occlusion score is above this value, the mouth is probably occluded.",
                  "Hint: Default value 70."
               ]
            },
            {
               "name": "nose_occlusion_threshold",
               "type": "int",
               "default_value": "50",
               "setter": true,
               "doc": [
                  "Nose occlusion threshold. ",
                  "If the score is above this value, the nose is probably occluded.",
                  "Hint: Default value 50."
               ]
            },
            {
               "name": "red_eye_threshold",
               "type": "int",
               "default_value": "10",
               "setter": true,
               "doc": [
                  "Threshold for confirming the presence of red eyes.",
                  "Hint: Default value is 10."
               ]
            },
            {
               "name": "smile_threshold",
               "type": "int",
               "default_value": "75",
               "setter": true,
               "doc": [
                  "Smile threshold.",
                  "If the Smile score is above this value, the detected face is definitely smiling.",
                  "Hint: Default value is 75."
               ]
            },
            {
               "name": "tinted_glass_threshold",
               "type": "int",
               "default_value": "25",
               "setter": true,
               "doc": [
                  "Tinted glass detection threshold.",
                  "If the score is above this value, the person is definitely wearing tinted glasses.",
                  "Hint: Default value 25."
               ]
            },
            {
               "name": "maximum_head_height_ratio",
               "type": "int",
               "default_value": "90",
               "setter": true,
               "doc": [
                  "Maximum distance between the base of the chin and the crown is less than 80% of the total height of the image.",
                  "For ICAO compliance, this distance must be in the range 60 to 90.",
                  "Hint: Default value is 90."
               ]
            },
            {
               "name": "minimum_head_height_ratio",
               "type": "int",
               "default_value": "60",
               "setter": true,
               "doc": [
                  "Minimum distance between the base of the chin and the crown is less than 80% of the total height of the image.",
                  "For ICAO compliance, this distance must be in the range 60 to 90.",
                  "Hint: Default value is 60."
               ]
            },
            {
               "name": "maximum_head_width_ratio",
               "type": "int",
               "default_value": "75",
               "setter": true,
               "doc": [
                  "Value indicating if the image width is conform to the (image width / head width) ratio of 7:5.",
                  "The head width is defined as the distance between the left and right ears.",
                  "For ICAO compliance, the value must be in the range 50 to 75.",
                  "Hint: Default value is 75."
               ]
            },
            {
               "name": "minimum_head_width_ratio",
               "type": "int",
               "default_value": "50",
               "setter": true,
               "doc": [
                  "Value indicating if the image width is conform to the (image width / head width) ratio of 7:5.",
                  "The head width is defined as the distance between the left and right ears.",
                  "For ICAO compliance, the value must be in the range 50 to 75.",
                  "Hint: Default value is 50."
               ]
            },
            {
               "name": "minimum_horizontal_position",
               "type": "int",
               "default_value": "45",
               "setter": true,
               "doc": [
                  "Value indicating if the head is correctly centered horizontally.",
                  "For ICAO compliance, the value must be in the range 45 to 55.",
                  "Hint: Default value is 45."
               ]
            },
            {
               "name": "maximum_horizontal_position",
               "type": "int",
               "default_value": "55",
               "setter": true,
               "doc": [
                  "Value indicating if the head is correctly centered horizontally.",
                  "For ICAO compliance, the value must be in the range 45 to 55.",
                  "Hint: Default value is 55."
               ]
            },
            {
               "name": "minimum_vertical_position",
               "type": "int",
               "default_value": "30",
               "setter": true,
               "doc": [
                  "Minimum distance from the bottom edge of the image to the imaginary line passing through the center of the eyes is between 50% - 70% of the total vertical length of the image.",
                  "For ICAO compliance, the value must be in the range 30 to 50.",
                  "Hint: Default value is 30."
               ]
            },
            {
               "name": "maximum_vertical_position",
               "type": "int",
               "default_value": "50",
               "setter": true,
               "doc": [
                  "Maximum distance from the bottom edge of the image to the imaginary line passing through the center of the eyes is between 50% - 70% of the total vertical length of the image.",
                  "For ICAO compliance, the value must be in the range 30 to 50.",
                  "Hint: Default value is 50."
               ]
            },
            {
               "name": "crop_aspect_ratio",
               "type": "float",
               "default_value": "1.33f",
               "setter": true,
               "doc": [
                  "Aspect ratio (height to width) of the cropped portrait image.",
                  "Hint: Default value is 4/3."
               ]
            },
            {
               "name": "crop_iod_ratio",
               "type": "float",
               "default_value": "0.25f",
               "setter": true,
               "doc": [
                  "Ratio between the interocular distance (IOD) and the image width for ICAO portrait cropping. Must be in the range ]0;1[.",
                  "Hint: Default value is 0.25."
               ]
            },
            {
               "name": "crop_eye_position_ratio",
               "type": "float",
               "default_value": "0.45f",
               "setter": true,
               "doc": [
                  "Ratio between the vertical eye position and the image height for ICAO portrait cropping. Must be in the range ]0;1[.",
                  "Hint: Default value is 0.45."
               ]
            },
            {
               "name": "crop_margin",
               "type": "float",
               "default_value": "0.5f",
               "setter": true,
               "doc": [
                  "Relative margin around the face for basic portrait cropping.",
                  "Hint: Default value is 0.5."
               ]
            },
            {
               "name": "maximum_iod",
               "type": "int",
               "default_value": "512",
               "setter": true,
               "doc": [
                  "Maximum interocular distance (IOD), in pixels.",
                  "This parameter is used to prevent the subject from being too close to the camera.",
                  "Hint: Default value is 512."
               ]
            },
            {
               "name": "minimum_iod",
               "type": "int",
               "default_value": "0",
               "setter": true,
               "doc": [
                  "Minimum intra-occular distance, in pixels.",
                  "This parameter is used to the limit the distance from the subject to the camera.",
                  "Hint: Default value is 0."
               ]
            },
            {
               "name": "maximum_pitch_angle",
               "type": "float",
               "default_value": "20",
               "setter": true,
               "doc": [
                  "Maximum head pitch angle, in degrees, for frontal positioning.",
                  "Hint: Default value is 20."
               ]
            },
            {
               "name": "maximum_roll_angle",
               "type": "float",
               "default_value": "15",
               "setter": true,
               "doc": [
                  "Maximum head roll angle, in degrees, for frontal positioning.",
                  "Hint: Default value is 15."
               ]
            },
            {
               "name": "maximum_yaw_angle",
               "type": "float",
               "default_value": "8",
               "setter": true,
               "doc": [
                  "Maximum head yaw angle, in degrees, for frontal positioning.",
                  "Hint: Default value is 8."
               ]
            },
            {
               "name": "male_threshold",
               "type": "int",
               "default_value": "50",
               "setter": true,
               "doc": [
                  "Male gender detection threshold.",
                  "If the score is higher than this value, the person is probably male.",
                  "Hint: Default value is 50."
               ]
            },
            {
               "name": "equal_brightness_threshold",
               "type": "int",
               "default_value": "10",
               "setter": true,
               "doc": [
                  "Equal brightness threshold.",
                  "Above this value, the face is equally exposed.",
                  "Hint: Default value is 10."
               ]
            },
            {
               "name": "dynamic_range_threshold",
               "type": "int",
               "default_value": "128",
               "setter": true,
               "doc": [
                  "Face dynamic range threshold.",
                  "Above this threshold, the dynamic range of the image in the face region is good enough.",
                  "Hint: Default value is 128."
               ]
            },
            {
               "name": "natural_skin_color_threshold",
               "type": "int",
               "default_value": "5",
               "setter": true,
               "doc": [
                  "Natural skin color threshold.",
                  "Above this threshold, th skin of the person looks natural.",
                  "Hint: Default value is 5."
               ]
            },
            {
               "name": "no_flash_reflection_threshold",
               "type": "int",
               "default_value": "70",
               "setter": true,
               "doc": [
                  "Flash reflexion detection threshold.",
                  "Above this threshold, the flash reflexion is probably present on the face.",
                  "Hint: Default value is 70."
               ]
            },
            {
               "name": "noise_threshold",
               "type": "int",
               "default_value": "90",
               "setter": true,
               "doc": [
                  "Threshold for confirming the presence of noise in the image.",
                  "Hint: Default value is 90."
               ]
            },
            {
               "name": "over_exposure_threshold",
               "type": "int",
               "default_value": "50",
               "setter": true,
               "doc": [
                  "Over exposure threshold.",
                  "Above this threshold, the ratio of face pixels are over-exposed. ",
                  "Hint: Default value is 50."
               ]
            },
            {
               "name": "pixelation_threshold",
               "type": "int",
               "default_value": "90",
               "setter": true,
               "doc": [
                  "Pixelation detection threshold.",
                  "Above this threshold, the image is probably pixelated.",
                  "Hint: Default value is 90."
               ]
            },
            {
               "name": "resolution_threshold",
               "type": "int",
               "default_value": "90",
               "setter": true,
               "doc": [
                  "Threshold indicating whether the image resolution is sufficient.",
                  "Hint: Default value is 90."
               ]
            },
            {
               "name": "sharpness_threshold",
               "type": "int",
               "default_value": "50",
               "setter": true,
               "doc": [
                  "Sharpness threshold. ",
                  "If the sharpness score is above this value, the image sharpness is sufficient.",
                  "Hint: Default value is 50."
               ]
            },
            {
               "name": "under_exposure_threshold",
               "type": "int",
               "default_value": "50",
               "setter": true,
               "doc": [
                  "Under exposure threshold.",
                  "Above this threshold, the face is probably under-exposed.",
                  "Hint: Default value is 50."
               ]
            },
            {
               "name": "pad_threshold",
               "type": "int",
               "default_value": "95",
               "setter": true,
               "doc": [
                  "Presentation attack detection threshold, from 0 to 100.",
                  "Higher values enable more attacks to be detected, but may reduce ease of use.",
                  "Hint: Default value 95."
               ]
            }
         ],
         "functions": [
            {
               "name": "reset",
               "doc": "Resets the face tracker.",
               "parameters": []
            },
            {
               "name": "create_portrait",
               "doc": [
                  "Analyses an image and creates a portrait with the first detected face or the currently tracked face if the update parameter is activated.",
                  "This method performs the following tasks:",
                  "- Face detection",
                  "- Landmark detection (68 points)",
                  "- Head pose estimation",
                  "- Verification of subject position",
                  "- Geometric attributes computation",
                  "- Unified quality score computation",
                  "Important: This method requires the ``FaceDetector``, ``FaceLandmarksEstimator`` and ``FacePoseEstimator`` models to be loaded."
               ],
               "parameters": [
                  {
                     "name": "image",
                     "type": "h_face_image",
                     "io": "in",
                     "doc": "Source image."
                  },
                  {
                     "name": "portrait",
                     "type": "h_face_portrait",
                     "io": "out",
                     "doc": "The newly created portrait."
                  }
               ]
            },
            {
               "name": "update_portrait",
               "doc": [
                  "Analyses an image and updates the specified portrait with the first detected face or the currently tracked face.",
                  "This method performs the following tasks:",
                  "- Face detection and tracking with prediction models",
                  "- Landmark detection (68 points)",
                  "- Head pose estimation",
                  "- Verification of subject position",
                  "- Template encoding and updating",
                  "- Geometric attributes computation",
                  "- Unified quality score computation",
                  "Important: This method requires the ``FaceDetector``, ``FaceEncoder``, ``FaceLandmarksEstimator`` and ``FacePoseEstimator`` models to be loaded."
               ],
               "parameters": [
                  {
                     "name": "portrait",
                     "type": "h_face_portrait",
                     "io": "in",
                     "doc": "The portrait to be updated."
                  },
                  {
                     "name": "image",
                     "type": "h_face_image",
                     "io": "in",
                     "doc": "The source image."
                  }
               ]
            },
            {
               "name": "crop_portrait",
               "doc": [
                  "Creates a portrait image by cropping the source image around the detected face."
               ],
               "parameters": [
                  {
                     "name": "portrait",
                     "type": "h_face_portrait",
                     "io": "in",
                     "doc": "The portrait to extract the face from."
                  },
                  {
                     "name": "image",
                     "type": "h_face_image",
                     "io": "out",
                     "doc": "The output cropped image of the face."
                  }
               ]
            },
            {
               "name": "crop_icao_portrait",
               "doc": [
                  "Creates an ICAO-compliant portrait image by cropping the source image around the detected face.",
                  "This method uses the following parameters:",
                  "- Portrait aspect ratio",
                  "- Portrait eye position ratio",
                  "- Portrait IOD ratio"
               ],
               "parameters": [
                  {
                     "name": "portrait",
                     "type": "h_face_portrait",
                     "io": "in",
                     "doc": "Source portrait."
                  },
                  {
                     "name": "image",
                     "type": "h_face_image",
                     "io": "out",
                     "doc": "The output cropped image."
                  }
               ]
            },
            {
               "name": "remove_background",
               "doc": [
                  "Removes the background on the specified portrait image.",
                  "Important: This method requires the ``FaceBackgroundSegmenter1A`` model to be loaded."
               ],
               "parameters": [
                  {
                     "name": "image",
                     "type": "h_face_image",
                     "io": "in",
                     "doc": "The portrait image."
                  },
                  {
                     "name": "red",
                     "type": "int",
                     "io": "in",
                     "doc": "Green channel of the background color. Must be a value from 0 to 255."
                  },
                  {
                     "name": "green",
                     "type": "int",
                     "io": "in",
                     "doc": "Red channel of the background color. Must be a value from 0 to 255."
                  },
                  {
                     "name": "blue",
                     "type": "int",
                     "io": "in",
                     "doc": "Blue channel of the background color. Must be a value from 0 to 255."
                  }
               ]
            },
            {
               "name": "estimate_geometry_quality",
               "doc": "Estimates the geometric quality of the specified portrait according to the ICAO portrait parameters.",
               "parameters": [
                  {
                     "name": "portrait",
                     "type": "h_face_portrait",
                     "io": "in",
                     "doc": "The portrait."
                  }
               ]
            },
            {
               "name": "estimate_photographic_quality",
               "doc": [
                  "Etimates the photographic quality of the specified portrait.",
                  "It includes image colorization, equal brightness, dynamic range, resolution, natural skin color, flash reflection, noise, over-exposure, under-exposure, pixelation, sharpness."
               ],
               "parameters": [
                  {
                     "name": "portrait",
                     "type": "h_face_portrait",
                     "io": "in",
                     "doc": "The portrait."
                  }
               ]
            },
            {
               "name": "estimate_background_uniformity",
               "doc": [
                  "Checks the background uniformity of the specified portrait.",
                  "Important: This method requires the ``FaceBackgroundUniformityEstimator1A`` model to be loaded."
               ],
               "parameters": [
                  {
                     "name": "portrait",
                     "type": "h_face_portrait",
                     "io": "in",
                     "doc": "The portrait."
                  }
               ]
            },
            {
               "name": "estimate_expression",
               "doc": [
                  "Estimates the subject's expression on the specified portrait.",
                  "Important: This method requires the ``FaceExpressionClassifier1A`` model to be loaded."
               ],
               "parameters": [
                  {
                     "name": "portrait",
                     "type": "h_face_portrait",
                     "io": "in",
                     "doc": "The portrait."
                  }
               ]
            },
            {
               "name": "estimate_age",
               "doc": [
                  "Estimates the age of the person.",
                  "Important: This method requires the ``FaceAgeEstimator1A`` model to be loaded."
               ],
               "parameters": [
                  {
                     "name": "portrait",
                     "type": "h_face_portrait",
                     "io": "in",
                     "doc": "The portrait."
                  }
               ]
            },
            {
               "name": "estimate_face_attributes",
               "doc": [
                  "Estimates the face attributes of the specified portrait.",
                  "It includes glasses, hat, makeup, mouth opening, gender, smile, eye gaze, eye opening, face mask",
                  "Note: The appropriate AI models must be loaded."
               ],
               "parameters": [
                  {
                     "name": "portrait",
                     "type": "h_face_portrait",
                     "io": "in",
                     "doc": "The portrait."
                  }
               ]
            },
            {
               "name": "detect_occlusions",
               "doc": [
                  "Detects occlusions on the subject's face.",
                  "Important: This function requires the ``FaceOcclusionDetector2A`` model to be loaded."
               ],
               "parameters": [
                  {
                     "name": "portrait",
                     "type": "h_face_portrait",
                     "io": "in",
                     "doc": "The portrait."
                  }
               ]
            },
            {
               "name": "detect_presentation_attack",
               "doc": [
                  "Detects a possible presentation attack.",
                  "Important: This method requires the ``FaceColorBasedPad`` models to be loaded."
               ],
               "parameters": [
                  {
                     "name": "portrait",
                     "type": "h_face_portrait",
                     "io": "in",
                     "doc": "The portrait."
                  }
               ]
            }
         ]
      }
   ],
   "enumerations": [
      {
         "name": "face_attack_support",
         "doc": [
            "Enumerates the types of presentation attack supports."
         ],
         "enumerators": [
            {
               "name": "none",
               "value": "0",
               "doc": "No attack support."
            },
            {
               "name": "id_card",
               "value": "1",
               "doc": "ID card support."
            },
            {
               "name": "screen",
               "value": "2",
               "doc": "Screen support (includes smartphones, tablets, laptops, etc)."
            },
            {
               "name": "print",
               "value": "3",
               "doc": "Printed support."
            }
         ]
      },
      {
         "name": "pad_status",
         "doc": [
            "Enumerates the statuses of the presentation attack detection (PAD)."
         ],
         "enumerators": [
            {
               "name": "unknown",
               "value": "0",
               "doc": "No decision could be made."
            },
            {
               "name": "bonafide",
               "value": "1",
               "doc": "The detected face is a bonafide (real face)."
            },
            {
               "name": "attack",
               "value": "2",
               "doc": "The detected face is an attack (spoof)."
            }
         ]
      },
      {
         "name": "face_error",
         "doc": [
            "Enumerates the possible error codes returned by this SDK."
         ],
         "enumerators": [
            {
               "name": "success",
               "value": "0",
               "doc": "No error."
            },
            {
               "name": "insufficient_buffer",
               "value": "-1",
               "doc": "The given buffer is too small."
            },
            {
               "name": "object_does_not_exist",
               "value": "-2",
               "doc": "The requested object does not exist; a 'null' should be returned if possible."
            },
            {
               "name": "base",
               "value": "-1000",
               "doc": "Base error code of the Face module."
            },
            {
               "name": "minimum",
               "value": "-1999",
               "doc": "Minimum error code of the Face module."
            },
            {
               "name": "invalid_handle",
               "value": "-1001",
               "doc": "The handle is invalid."
            },
            {
               "name": "invalid_parameter",
               "value": "-1002",
               "doc": "The parameter is invalid."
            },
            {
               "name": "invalid_pixel_format",
               "value": "-1004",
               "doc": "The image pixel format is invalid."
            },
            {
               "name": "invalid_template_format",
               "value": "-1005",
               "doc": "The template format is invalid."
            },
            {
               "name": "invalid_landmarks",
               "value": "-1006",
               "doc": "The computed landmarks are invalid and do not allow to process the desired information."
            },
            {
               "name": "iod_too_small",
               "value": "-1007",
               "doc": "The computed interocular distance (IOD) is too small to allow to process the desired information."
            },
            {
               "name": "invalid_model_path",
               "value": "-1008",
               "doc": "The model could not be found in the given directory path."
            },
            {
               "name": "invalid_image_size",
               "value": "-1010",
               "doc": "The input image size is invalid for this operation."
            },
            {
               "name": "unloaded_model",
               "value": "-1020",
               "doc": "The model which is required for this operation was not loaded."
            },
            {
               "name": "inference_backend_error",
               "value": "-1040",
               "doc": "The inference backend failed to infer, probably due to inconsistent input."
            },
            {
               "name": "processing_unit_unavailable",
               "value": "-1041",
               "doc": "The requested processing unit is not available in this build."
            },
            {
               "name": "indexer_already_initialized",
               "value": "-1050",
               "doc": "The face indexer object is already initialized."
            },
            {
               "name": "indexer_id_already_exists",
               "value": "-1051",
               "doc": "The requested id already exists in the Face Indexer object."
            },
            {
               "name": "indexer_invalid_template_data",
               "value": "-1052",
               "doc": "The data of the template is corrupted and cannot be added to the Face Indexer object."
            },
            {
               "name": "indexer_full",
               "value": "-1053",
               "doc": "Maximum template number of the Face Indexer object has been reached."
            },
            {
               "name": "indexer_id_not_found",
               "value": "-1054",
               "doc": "No template with this id has been found in the Face Indexer object."
            },
            {
               "name": "indexer_invalid_index_file",
               "value": "-1055",
               "doc": "This index file is not valid and cannot be loaded."
            },
            {
               "name": "function_not_implemented",
               "value": "-1056",
               "doc": "This function is not implemented."
            }
         ]
      },
      {
         "name": "face_expression",
         "doc": [
            "Enumerates the possible facial expressions."
         ],
         "enumerators": [
            {
               "name": "unknown",
               "doc": "Unknown.",
               "value": "0"
            },
            {
               "name": "angriness",
               "doc": "Angriness.",
               "value": "1"
            },
            {
               "name": "disgust",
               "doc": "Disgust.",
               "value": "2"
            },
            {
               "name": "fear",
               "doc": "Fear.",
               "value": "3"
            },
            {
               "name": "happiness",
               "doc": "Happiness.",
               "value": "4"
            },
            {
               "name": "neutrality",
               "doc": "Neutrality.",
               "value": "5"
            },
            {
               "name": "sadness",
               "doc": "Sadness.",
               "value": "6"
            },
            {
               "name": "surprise",
               "doc": "Surprise.",
               "value": "7"
            }
         ]
      },
      {
         "name": "face_matcher_threshold",
         "doc": [
            "Enumerates some typical values for the matching decision threshold."
         ],
         "enumerators": [
            {
               "name": "fmr100",
               "doc": "False Match Rate = 1%",
               "value": "2000"
            },
            {
               "name": "fmr1000",
               "doc": "False Match Rate = 0.1% (1/1K)",
               "value": "3000"
            },
            {
               "name": "fmr10000",
               "doc": "False Match Rate = 0.01% (1/10K)",
               "value": "4000"
            },
            {
               "name": "fmr100000",
               "doc": "False Match Rate = 0.001% (1/100K)",
               "value": "5000"
            },
            {
               "name": "fmr1000000",
               "doc": "False Match Rate = 0.0001% (1/1M)",
               "value": "6000"
            },
            {
               "name": "fmr10000000",
               "doc": "False Match Rate = 0.00001% (1/10M)",
               "value": "7000"
            },
            {
               "name": "fmr100000000",
               "doc": "False Match Rate = 0.000001% (1/100M)",
               "value": "8000"
            },
            {
               "name": "fmr1000000000",
               "doc": "False Match Rate = 0.0000001% (1/1B)",
               "value": "9000"
            },
            {
               "name": "fmr10000000000",
               "doc": "False Match Rate = 0.00000001% (1/10B)",
               "value": "10000"
            }
         ]
      },
      {
         "name": "face_model",
         "doc": [
            "Enumerates the AI models available in this SDK."
         ],
         "enumerators": [
            {
               "name": "face_detector_#3A",
               "value": "1001",
               "doc": "Face detector 3A. Legacy high-accuracy detector, mainly for server-based or offline applications."
            },
            {
               "name": "face_detector_#3B",
               "value": "1002",
               "doc": "Face detector 3B. Legacy light detector, mainly for mobile/embedded real-time detection/tracking applications."
            },
            {
               "name": "face_detector_#3C",
               "value": "1003",
               "doc": "Face detector 3C. Ultra-light detector, dedicated to short-range real-time detection/tracking applications only."
            },
            {
               "name": "face_detector_#4A",
               "value": "1004",
               "doc": "Face detector 4A. Highest accuracy detector in this SDK, mainly for server-based or offline applications."
            },
            {
               "name": "face_detector_#4B",
               "value": "1005",
               "doc": "Face detector 4B. Light and accurate detector, mainly for mobile/embedded real-time detection/tracking applications."
            },
            {
               "name": "face_detector_#4BQ",
               "value": "1006",
               "doc": "Hardware specific declination of Face detector 4B."
            },
            {
               "name": "face_encoder_#8A",
               "value": "1102",
               "doc": "Face encoder 8A. Legacy model."
            },
            {
               "name": "face_encoder_#8B",
               "value": "1103",
               "doc": "Face encoder 8B. Legacy model."
            },
            {
               "name": "face_encoder_#9A",
               "value": "1104",
               "doc": "Face encoder 9A. Highest accuracy face encoder in this SDK, mainly for server-based 1:N applications."
            },
            {
               "name": "face_encoder_#9B",
               "value": "1105",
               "doc": "Face encoder 9B. Light and accurate face encoder, mainly for mobile/embedded 1:1 applications."
            },
            {
               "name": "face_encoder_#9C",
               "value": "1106",
               "doc": "Face encoder 9C. Ultra-light face encoder, dedicated to face tracking only."
            },
            {
               "name": "face_periocular_encoder_#2A",
               "value": "1152",
               "doc": "Periocular encoder 2A. Highest accuracy periocular encoder in this SDK. Provides an efficient alternative to face encoders when people wear masks in server-based 1:N applications."
            },
            {
               "name": "face_encoding_quality_estimator_#3A",
               "value": "1202",
               "doc": "Face encoding quality estimator 3A."
            },
            {
               "name": "face_landmarks_estimator_#2A",
               "value": "1301",
               "doc": "Face landmarks estimator 2A."
            },
            {
               "name": "face_age_estimator_#1A",
               "value": "1350",
               "doc": "Face age estimator 1A."
            },
            {
               "name": "face_attributes_classifier_#2A",
               "value": "1401",
               "doc": "Face attributes estimator 2A."
            },
            {
               "name": "face_expression_classifier_#1A",
               "value": "1450",
               "doc": "Face expression classifier 1A."
            },
            {
               "name": "eye_openness_detector_#1A",
               "value": "1510",
               "doc": "Eye openness detector 1A."
            },
            {
               "name": "eye_redness_detector_#1A",
               "value": "1520",
               "doc": "Eye redness detector 1A."
            },
            {
               "name": "eye_gaze_estimator_#2A",
               "value": "1531",
               "doc": "Eye gaze estimator 2A."
            },
            {
               "name": "face_background_uniformity_#1A",
               "value": "1550",
               "doc": "Face background uniformity estimator 1A."
            },
            {
               "name": "face_mask_classifier_#2A",
               "value": "1601",
               "doc": "Face mask classifier 2A."
            },
            {
               "name": "face_occlusion_detector_#2A",
               "value": "1651",
               "doc": "Face occlusion detector 2A."
            },
            {
               "name": "face_pose_estimator_#1A",
               "value": "1700",
               "doc": "Face pose estimator 1A."
            },
            {
               "name": "face_color_based_pad_#2A",
               "value": "1801",
               "doc": "Face color-based presentation attack detector (PAD) 2A."
            },
            {
               "name": "face_color_based_pad_#3A",
               "value": "1802",
               "doc": "Face color-based presentation attack detector (PAD) 3A."
            },
            {
               "name": "face_blurriness_detector_#1A",
               "value": "1810",
               "doc": "Face blurriness detector 1A."
            },
            {
               "name": "face_attack_support_detector_#2A",
               "value": "1831",
               "doc": "Face attack support detector 2A."
            },
            {
               "name": "face_attack_support_detector_#3A",
               "value": "1841",
               "doc": "Face attack support detector 3A."
            },
            {
               "name": "face_depth_based_pad_#2A",
               "value": "1850",
               "doc": "Face depth-based presentation attack detector (PAD) 2A."
            },
            {
               "name": "face_background_segmenter_#1A",
               "value": "1870",
               "doc": "Background removal model."
            },
            {
               "name": "face_segmenter_#2A",
               "value": "1871",
               "doc": "Face segmenter model."
            },
            {
               "name": "compression_artifact_remover_#1A",
               "value": "1872",
               "doc": "Compression artificat remover."
            }
         ]
      },
      {
         "name": "face_template_format",
         "doc": [
            "Enumerates the face template formats."
         ],
         "enumerators": [
            {
               "name": "undefined",
               "doc": "Undefined template format.",
               "value": "0x0000"
            },
            {
               "name": "v#8A",
               "doc": "Template generated with the FaceEncoder8A model.",
               "value": "0x218A"
            },
            {
               "name": "v#8B",
               "doc": "Template generated with the FaceEncoder8B model.",
               "value": "0x218B"
            },
            {
               "name": "v#9A",
               "doc": "Template generated with the FaceEncoder9A model.",
               "value": "0x219A"
            },
            {
               "name": "v#9B",
               "doc": "Template generated with the FaceEncoder9B model.",
               "value": "0x219B"
            },
            {
               "name": "v#9C",
               "doc": "Template generated with the FaceEncoder9C model.",
               "value": "0x219C"
            },
            {
               "name": "periocular_v#2A",
               "doc": "Template generated with the FacePeriocularEncoder2A model.",
               "value": "0x222A"
            },
            {
               "name": "periocular_v#2B",
               "doc": "Template generated with the FacePeriocularEncoder2B model.",
               "value": "0x222B"
            }
         ]
      },
      {
         "name": "pooling_method",
         "doc": [
            "Enumerates the possible pooling methods for template agregration in the FaceTracker module."
         ],
         "enumerators": [
            {
               "name": "average",
               "doc": "Average pooling method. Merges instances (scores, templates, etc) into one.",
               "value": "0"
            },
            {
               "name": "maximum",
               "doc": "Maximum pooling method. Selects best instance according to a given metric.",
               "value": "1"
            }
         ]
      },
      {
         "name": "processing_unit",
         "doc": [
            "Enumerates the processing units for the inference of AI models."
         ],
         "type": "enumeration",
         "enumerators": [
            {
               "name": "cpu",
               "doc": "CPU.",
               "value": "0"
            },
            {
               "name": "gpu",
               "doc": "GPU (automatic backend selection).",
               "value": "1"
            },
            {
               "name": "opencl",
               "doc": "OpenCL Backend.",
               "value": "2"
            },
            {
               "name": "cuda",
               "doc": "CUDA Backend.",
               "value": "3"
            },
            {
               "name": "metal",
               "doc": "Metal Backend.",
               "value": "4"
            },
            {
               "name": "vulkan",
               "doc": "Vulkan Backend.",
               "value": "5"
            }
         ]
      },
      {
         "name": "tracking_status",
         "doc": [
            "Enumerates the possible face-tracking statuses."
         ],
         "type": "enumeration",
         "enumerators": [
            {
               "name": "none",
               "doc": "No status.",
               "value": "0"
            },
            {
               "name": "initialized",
               "doc": "A face was detected and a track is initialized. Once the required number of consecutive detections will be reached (see MinimumTrackedFaceAge in FaceTracker), the track will move on to 'Confirmed' status.",
               "value": "1"
            },
            {
               "name": "confirmed",
               "doc": "The face was detected and tracked for the required number of consecutive frames, hence the track is confirmed.",
               "value": "2"
            },
            {
               "name": "temporary_lost",
               "doc": "The face was missed for at least one frame. It can come back to 'Confirmed' if it is re-detected or move on to 'Deleted' if it keeps being missed for a given number of consecutive frames (see MinimumTrackedFaceAge in FaceTracker).",
               "value": "3"
            },
            {
               "name": "deleted",
               "doc": "The face was missed for too many frames, the track is over. Remark: this state is purely internal.",
               "value": "4"
            }
         ]
      },
      {
         "name": "subject_position",
         "type": "enumeration",
         "bitfield": true,
         "doc": "Enumerates the positions of a subject in an image.",
         "enumerators": [
            {
               "name": "undefined",
               "doc": "The position is undefined.",
               "value": "0xFF"
            },
            {
               "name": "correct",
               "doc": "The position is correct.",
               "value": "0x00"
            },
            {
               "name": "too_close",
               "doc": "The subject is too close.",
               "value": "0x01"
            },
            {
               "name": "too_far",
               "doc": "The subject is too far.",
               "value": "0x02"
            },
            {
               "name": "too_left",
               "doc": "The subject is too left.",
               "value": "0x04"
            },
            {
               "name": "too_right",
               "doc": "The subject is too right.",
               "value": "0x08"
            },
            {
               "name": "too_high",
               "doc": "The subject is too high.",
               "value": "0x10"
            },
            {
               "name": "too_low",
               "doc": "The subject is too low.",
               "value": "0x20"
            }
         ]
      },
      {
         "name": "portrait_status",
         "type": "enumeration",
         "doc": "Enumerates the possible statuses of a portrait.",
         "enumerators": [
            {
               "name": "undefined",
               "doc": "The status is undefined.",
               "value": "0"
            },
            {
               "name": "no_face_detected",
               "doc": "No face has been detected in the provided image."
            },
            {
               "name": "created",
               "doc": "A new portrait has been created."
            },
            {
               "name": "updated",
               "doc": "The portrait has been updated."
            }
         ]
      },
      {
         "name": "face_segmentation_label",
         "type": "enumeration",
         "doc": "Enumerates the face segmentation labels",
         "enumerators": [
            {
               "name": "background",
               "doc": "Background label",
               "value": "0"
            },
            {
              "name": "cloth",
              "doc": "Cloth label",
              "value": "1"
            },
            {
              "name": "neck",
              "doc": "Neck label",
              "value": "2"
            },
            {
              "name": "skin",
              "doc": "Skin label",
              "value": "3"
            },
            {
              "name": "mouth",
              "doc": "Mouth label",
              "value": "4"
            },
            {
              "name": "lips",
              "doc": "Lips label",
              "value": "5"
            },
            {
              "name": "nose",
              "doc": "Nose label",
              "value": "6"
            },
            {
              "name": "ears",
              "doc": "Ears label",
              "value": "7"
            },
            {
              "name": "earring",
              "doc": "Earring label",
              "value": "8"
            },
            {
              "name": "necklace",
              "doc": "Necklace label",
              "value": "9"
            },
            {
              "name": "eyebrows",
              "doc": "Eyebrows label",
              "value": "10"
            },
            {
              "name": "hair",
              "doc": "Hair label",
              "value": "11"
            },
            {
              "name": "glasses",
              "doc": "Glasses label",
              "value": "12"
            },
            {
              "name": "eyes",
              "doc": "Eyes label",
              "value": "13"
            },
            {
              "name": "hat",
              "doc": "Hat label",
              "value": "14"
            }
         ]
      },
      {
         "name": "portrait_instruction",
         "type": "enumeration",
         "doc": "Enumerates the instructions to be given to the user for effective portrait capture.",
         "enumerators": [
            {
               "name": "none",
               "doc": "No instruction given.",
               "value": "0"
            },
            {
               "name": "center_face",
               "doc": "Center your face in the frame."
            },
            {
               "name": "look_straight",
               "doc": "Look directly at the camera."
            },
            {
               "name": "look_away",
               "doc": "Look away."
            },
            {
              "name": "adjust_lightning",
              "doc": "Ensure your face is well-lit."
            },
            {
               "name": "low_contrast",
               "doc": "The image contrast is too low."
             },
             {
               "name": "unbalanced_colors",
               "doc": "Image colors are not balanced correctly."
             },
             {
               "name": "image_out_of_focus",
               "doc": "Image is out of focus."
            },
            {
               "name": "move_closer",
               "doc": "Move closer to the camera."
            },
            {
               "name": "move_back",
               "doc": "Move back from the camera."
            },
            {
               "name": "move_down",
               "doc": "Move your face lower to align with the camera."
            },
            {
               "name": "move_up",
               "doc": "Move your face higher to align with the camera."
            },
            {
               "name": "move_right",
               "doc": "Move your face to the right."
            },
            {
               "name": "move_left",
               "doc": "Move your face to the left."
            },
            {
               "name": "stay_still",
               "doc": "Stay still in front of the camera."
            },
            {
               "name": "close_mouth",
               "doc": "Close your mouth."
            },
            {
               "name": "open_mouth",
               "doc": "Open your mouth."
            },
            {
               "name": "smile",
               "doc": "Smile."
            },
            {
               "name": "ensure_neutral_expression",
               "doc": "Ensure a neutral expression."
            },
            {
               "name": "face_partially_hidden",
               "doc": "Remove any obstacle from your face."
            },
            {
               "name": "turn_head_left",
               "doc": "Turn your head to the left."
            },
            {
               "name": "turn_head_right",
               "doc": "Turn your head to the right."
            },
            {
               "name": "raise_head",
               "doc": "Raise your head."
            },
            {
               "name": "lower_head",
               "doc": "Lower your head."
            },
            {
               "name": "rotate_head",
               "doc": "Rotate your head in the specified direction."
            },
            {
               "name": "turn_head_slightly",
               "doc": "Turn your head slightly."
            },
            {
               "name": "remove_head_coverings",
               "doc": "Remove any head coverings."
            },
            {
               "name": "remove_face_mask",
               "doc": "Remove your face mask."
            },
            {
               "name": "remove_glasses",
               "doc": "Remove your glasses."
            },
            {
               "name": "remove_sunglasses",
               "doc": "Remove your sunglasses."
            }
          ]
      }
   ],
   "structs": [
      {
         "name": "background_uniformity",
         "doc": [
            "Represents the result of the background uniformity check."
         ],
         "members": [
            {
               "name": "color_uniformity",
               "type": "int",
               "doc": [
                  "Color uniformity score, in the range [0:100].",
                  "Hint: Recommended threshold is 80."
               ]
            },
            {
               "name": "structure_uniformity",
               "type": "int",
               "doc": [
                  "Structure uniformity score, in the range [0:100].",
                  "Hint: Recommended threshold is 80."
               ]
            }
         ]
      },
      {
         "name": "color_based_pad_result",
         "doc": [
            "Represents the result of the color-based PAD method."
         ],
         "members": [
            {
               "name": "score",
               "type": "int",
               "doc": "Color-based PAD score, in the range [0:100]."
            },
            {
               "name": "confidence",
               "type": "int",
               "doc": "Confidence score of the color-based PAD algorithm, in the range [0:100]."
            }
         ]
      },
      {
         "name": "detected_face_attack_support",
         "doc": [
            "Represents the result of the attack support detection."
         ],
         "members": [
            {
               "name": "attack_support",
               "type": "e_face_face_attack_support",
               "doc": "Attack support type."
            },
            {
               "name": "score",
               "type": "int",
               "doc": [
                  "Confidence score of the detected attack support, in the range [0:100]."
               ]
            }
         ]
      },
      {
         "name": "eye_gaze",
         "doc": [
            "Represents the eye gaze."
         ],
         "members": [
            {
               "name": "left_eye_x_gaze",
               "type": "float",
               "doc": [
                  "Value indicating the gaze alongside the x-axis of the left eye in degrees.",
                  "Values vary in the range [-90, +90].",
                  "Hint: The maximum recommended value for an ICAO-compliant portrait is +/- 35 degrees."
               ]
            },
            {
               "name": "left_eye_y_gaze",
               "type": "float",
               "doc": [
                  "Value indicating the gaze alongside the y-axis of the left eye in degrees.",
                  "Values vary in the range [-90, +90].",
                  "Hint: The maximum recommended value for an ICAO-compliant portrait is +/- 35 degrees."
               ]
            },
            {
               "name": "right_eye_x_gaze",
               "type": "float",
               "doc": [
                  "Value indicating the gaze alongside the x-axis of the right eye in degrees.",
                  "Values vary in the range [-90, +90].",
                  "Hint: The maximum recommended value for an ICAO-compliant portrait is +/- 35 degrees."
               ]
            },
            {
               "name": "right_eye_y_gaze",
               "type": "float",
               "doc": [
                  "Value indicating the gaze alongside the y-axis of the right eye in degrees.",
                  "Values vary in the range [-90, +90].",
                  "Hint: The maximum recommended value for an ICAO-compliant portrait is +/- 35 degrees."
               ]
            }
         ]
      },
      {
         "name": "face_attributes",
         "doc": [
            "Represents the face attributes."
         ],
         "members": [
            {
               "name": "glasses",
               "type": "int",
               "doc": [
                  "Value, from 0 to 100, indicating whether the subject is wearing glasses or not.",
                  "Hint: The recommended threshold is 10."
               ]
            },
            {
               "name": "hat",
               "type": "int",
               "doc": [
                  "Value, from 0 to 100, indicating whether the subject is wearing a hat or not.",
                  "Hint: The recommended value is less than 10."
               ]
            },
            {
               "name": "make_up",
               "type": "int",
               "doc": [
                  "Value, from 0 to 100, indicating whether the subject is wearing makeup or not.",
                  "Hint: The recommended value is less than 50."
               ]
            },
            {
               "name": "male",
               "type": "int",
               "doc": [
                  "Value, from 0 to 100, indicating the estimated gender of the subject.",
                  "A value near 0 suggests that the subject is estimated to be female.",
                  "A value near 100 suggests that the subject is estimated to be male."
               ]
            },
            {
               "name": "mouth_open",
               "type": "int",
               "doc": [
                  "Value, from 0 to 100, indicating whether the subject's mouth is open or not.",
                  "Hint: The recommended value is less than 35."
               ]
            },
            {
               "name": "smile",
               "type": "int",
               "doc": [
                  "Value, from 0 to 100, indicating whether the subject is smiling or not.",
                  "Hint: The recommended value is less than 75."
               ]
            }
         ]
      },
      {
         "name": "face_occlusion_scores",
         "doc": [
            "Represents the result of face occlusion detection."
         ],
         "members": [
            {
               "name": "left_eye_occlusion_score",
               "type": "int",
               "doc": [
                  "Value, from 0 to 100, indicating whether the left eye is occluded or not.",
                  "100 means that the left eye is definitely occluded.",
                  "Hint: The recommended threshold is 50."
               ]
            },
            {
               "name": "mouth_occlusion_score",
               "type": "int",
               "doc": [
                  "Value, from 0 to 100, indicating whether the mouth is occluded or not.",
                  "100 means that the mouth is definitely occluded.",
                  "Hint: The recommended threshold is 30."
               ]
            },
            {
               "name": "nose_occlusion_score",
               "type": "int",
               "doc": [
                  "Value, from 0 to 100, indicating whether the nose is occluded or not.",
                  "100 means that the nose is definitely occluded.",
                  "Hint: The recommended threshold is 50."
               ]
            },
            {
               "name": "right_eye_occlusion_score",
               "type": "int",
               "doc": [
                  "Value, from 0 to 100, indicating whether the right eye is occluded or not.",
                  "100 means that the right eye is definitely occluded.",
                  "Hint: The recommended threshold is 50."
               ]
            }
         ]
      },
      {
         "name": "face_pose",
         "doc": [
            "Represents the face pose (yaw, pitch, roll)."
         ],
         "members": [
            {
               "name": "pitch",
               "type": "float",
               "doc": "Pitch angle in degrees."
            },
            {
               "name": "roll",
               "type": "float",
               "doc": "Roll angle in degrees."
            },
            {
               "name": "yaw",
               "type": "float",
               "doc": "Yaw angle in degrees."
            }
         ]
      },
      {
         "name": "geometric_attributes",
         "doc": [
            "Represents the geometric attributes of a portrait image."
         ],
         "members": [
            {
               "name": "head_image_height_ratio",
               "type": "int",
               "doc": [
                  "Value indicating if the distance between the base of the chin and the crown is less than 80% of the total height of the image.",
                  "Hint: For ICAO compliance, the value must be in the range 60 to 90."
               ]
            },
            {
               "name": "head_image_width_ratio",
               "type": "int",
               "doc": [
                  "Value indicating if the image width is conform to the (image width / head width) ratio of 7:5.",
                  "The head width is defined as the distance between the left and right ears.",
                  "Hint: For ICAO compliance, the value must be in the range 50 to 75."
               ]
            },
            {
               "name": "horizontal_position",
               "type": "int",
               "doc": [
                  "Value indicating if the head is correctly centered horizontally.",
                  "Hint: For ICAO compliance, the value must be in the range 45 to 55."
               ]
            },
            {
               "name": "resolution",
               "type": "int",
               "doc": [
                  "Value indicating if the image resolution is sufficient.",
                  "Hint: The recommended value is over 90."
               ]
            },
            {
               "name": "vertical_position",
               "type": "int",
               "doc": [
                  "Value indicating if the distance from the bottom edge of the image to the imaginary line passing through the center of the eyes is between 50% - 70% of the total vertical length of the image.",
                  "Hint: For ICAO compliance, the value must be in the range 30 to 50."
               ]
            }
         ]
      },
      {
         "name": "glasses_attributes",
         "doc": [
            "Represents some glasses attributes."
         ],
         "members": [
            {
               "name": "frame_on_eye",
               "type": "int",
               "doc": [
                  "Value indicating if the glasses frame is not on the eyes.",
                  "0 means that there is no occlusion of the eye by the frame.",
                  "Hint: The recommended value is under 10."
               ]
            },
            {
               "name": "heavy_frame",
               "type": "int",
               "doc": [
                  "Value, from 0 to 100, indicating if the glasses' frame is too heavy.",
                  "0 means that the frame is super thick.",
                  "Hint: The recommended value is over 20."
               ]
            },
            {
               "name": "tinted_glasses",
               "type": "int",
               "default_value": "0",
               "doc": [
                  "Value, from 0 to 100, indicating if the glasses are tinted.",
                  "100 means that the glasses are completely transparent.",
                  "Hint: The recommended value is over 25."
               ]
            }
         ]
      },
      {
         "name": "photographic_attributes",
         "doc": [
            "Represents the photographic attributes of a portrait image."
         ],
         "members": [
            {
               "name": "equal_brightness",
               "type": "int",
               "doc": [
                  "Value, from 0 to 100, indicating if one side of the face is ligther than the other side.",
                  "0 means that brightness is perfectly equal on both sides of the face.",
                  "Hint: The recommended value is over 90."
               ]
            },
            {
               "name": "face_dynamic_range",
               "type": "int",
               "doc": [
                  "Value, from 0 to 255, indicating the dynamic range of the image in the face region.",
                  "Hint: The recommended threshold is 110."
               ]
            },
            {
               "name": "flash_reflection",
               "type": "int",
               "doc": [
                  "Value, from 0 to 100, indicating if a flash reflection is present on the face.",
                  "100 means that there is no flash reflection.",
                  "Hint: The recommended threshold is 70."
               ]
            },
            {
               "name": "natural_skin_color",
               "type": "int",
               "doc": [
                  "Value, from 0 to 100, indicating if the skin looks natural.",
                  "0 means that the face does not have a natural skin color at all.",
                  "Hint: The recommended threshold is over 5."
               ]
            },
            {
               "name": "over_exposure",
               "type": "int",
               "doc": [
                  "Value, from 0 to 100, indicating the ratio of face pixels that are over-exposed.",
                  "0 means that the face is not over-exposed at all.",
                  "Hint: The recommended value is under 50."
               ]
            },
            {
               "name": "pixelation",
               "type": "int",
               "doc": [
                  "Value, from 0 to 100, indicating if the image is pixelized.",
                  "0 means that there is no pixelation at all.",
                  "Hint: The recommended value is under 50."
               ]
            },
            {
               "name": "sharpness",
               "type": "int",
               "doc": [
                  "Value, from 0 to 100, indicating if the image sharpness is sufficient.",
                  "0 means that the image is not sharp at all.",
                  "Hint: The recommended value is over 40."
               ]
            },
            {
               "name": "under_exposure",
               "type": "int",
               "doc": [
                  "Value, from 0 to 100, indicating the ratio of face pixels that are under-exposed.",
                  "0 means that the face is not under-exposed at all.",
                  "Hint: The recommended value is under 50."
               ]
            }
         ]
      },
      {
         "name": "portrait_quality_checkpoints",
         "doc": [
            "Represents the portrait quality check points."
         ],
         "members": [
            {
               "name": "mouth_closed",
               "type": "int",
               "default_value": "-1",
               "doc": "Value indicating whether the mouth is closed."
            },
            {
               "name": "image_coloured",
               "type": "int",
               "default_value": "0",
               "doc": "Value indicating whether the image is coloured, not grayscale."
            },
            {
               "name": "brightness_balanced",
               "type": "int",
               "default_value": "-1",
               "doc": [
                  "Value indicating whether lighting is equally distributed on the face, in particular symmetrically, i.e., there is no difference between the brightness of the right and left side of the face."
               ]
            },
            {
               "name": "pose_frontal",
               "type": "int",
               "default_value": "-1",
               "doc": "Value indicating whether the subject's face is frontal."
            },
            {
               "name": "dynamic_range",
               "type": "int",
               "default_value": "-1",
               "doc": "Value indicating whether the dynamic range on the image is sufficient."
            },
            {
               "name": "head_height_correct",
               "type": "int",
               "default_value": "-1",
               "doc": "Value indicating whether the height of the head in the image is correct."
            },
            {
               "name": "head_width_correct",
               "type": "int",
               "default_value": "-1",
               "doc": "Value indicating whether the width of the head in the image is correct."
            },
            {
               "name": "head_horizontal_position_correct",
               "type": "int",
               "default_value": "-1",
               "doc": "Value indicating whether the horizontal position of the head in the image is correct."
            },
            {
               "name": "head_vertical_position_correct",
               "type": "int",
               "default_value": "-1",
               "doc": "Value indicating whether the vertical position of the head in the image is correct."
            },
            {
               "name": "image_resolution_correct",
               "type": "int",
               "default_value": "-1",
               "doc": "Value indicating whether the image resolution is correct."
            },
            {
               "name": "image_sharp",
               "type": "int",
               "default_value": "-1",
               "doc": "Value indicating whether the image is sharp."
            },
            {
               "name": "skin_color_natural",
               "type": "int",
               "default_value": "-1",
               "doc": "Value indicating whether the skin looks natural."
            },
            {
               "name": "expression_neutral",
               "type": "int",
               "default_value": "-1",
               "doc": "Value indicating whether no emotion is visible on the subject's face."
            },
            {
               "name": "no_flash_reflection",
               "type": "int",
               "default_value": "-1",
               "doc": "Value indicating whether no flash reflection is visible."
            },
            {
               "name": "no_glasses",
               "type": "int",
               "default_value": "-1",
               "doc": "Value indicating whether the subject does not wear glasses."
            },
            {
               "name": "no_hat",
               "type": "int",
               "default_value": "-1",
               "doc": "Value indicating whether the subject does not wear a hat."
            },
            {
               "name": "no_noise",
               "type": "int",
               "default_value": "-1",
               "doc": "Value indicating whether no noise is present in the image."
            },
            {
               "name": "no_over_exposure",
               "type": "int",
               "default_value": "-1",
               "doc": "Value indicating whether the image is not over-exposed."
            },
            {
               "name": "no_pixelation",
               "type": "int",
               "default_value": "-1",
               "doc": "Value indicating whether the image is not pixelated."
            },
            {
               "name": "no_red_eye",
               "type": "int",
               "default_value": "-1",
               "doc": "Value indicating whether no red-eye is present."
            },
            {
               "name": "no_smile",
               "type": "int",
               "default_value": "-1",
               "doc": "Value indicating whether the subject is not smiling."
            },
            {
               "name": "no_under_exposure",
               "type": "int",
               "default_value": "-1",
               "doc": "Value indicating whether the image is not under-exposed."
            },
            {
               "name": "eyes_open",
               "type": "int",
               "default_value": "-1",
               "doc": "Value indicating whether the eyes are open."
            },
            {
               "name": "look_straight",
               "type": "int",
               "default_value": "-1",
               "doc": "Value indicating whether the subject looks straight towards the camera."
            },
            {
               "name": "background_uniform",
               "type": "int",
               "default_value": "-1",
               "doc": "Value indicating whether the color of the background is uniform."
            },
            {
               "name": "left_eye_visible",
               "type": "int",
               "default_value": "-1",
               "doc": "Value indicating whether the left eye is visible."
            },
            {
               "name": "right_eye_visible",
               "type": "int",
               "default_value": "-1",
               "doc": "Value indicating whether the right eye is visible."
            },
            {
               "name": "mouth_visible",
               "type": "int",
               "default_value": "-1",
               "doc": "Value indicating whether the mouth is visible."
            },
            {
               "name": "nose_visible",
               "type": "int",
               "default_value": "-1",
               "doc": "Value indicating whether the nose is visible."
            }
         ]
      },
      {
         "name": "lib_version",
         "members": [
            {
               "name": "major",
               "type": "int",
               "doc": "Version."
            },
            {
               "name": "minor",
               "type": "int",
               "doc": "Release."
            },
            {
               "name": "build",
               "type": "int",
               "doc": "Build."
            }
         ]
      }
   ]
}