// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// Next MinVersion: 1

module chromeos.media_perception.mojom;

import "media_perception/mojom/common.mojom";

[Extensible]
enum EntityType {
  ENTITY_TYPE_UNKNOWN = 0,
  FACE = 1,
  PERSON = 2,
  MOTION_REGION = 3,
  LABELED_REGION = 4,
};

struct Entity {
  EntityType type@0;

  string? label@1;

  // A normalized bounding box which captures the entire detected entity.
  NormalizedBoundingBox? bounding_box@2;

  // A value for the quality of this detection in the interval [0, 1].
  float confidence@3;

  // The estimated depth of the entity from the camera.
  Distance? depth@4;
};

[Extensible]
enum FramePerceptionType {
  FRAME_PERCEPTION_TYPE_UNKNOWN = 0,
  FACE_DETECTION = 1,
  PERSON_DETECTION = 2,
  MOTION_DETECTION = 3,
};

struct FramePerception {
  int64 frame_id@0;

  // The timestamp associated with the frame (when it is received by the
  // analytics process).
  int64 timestamp_us@1;

  // A list of entities detected in this frame.
  array<Entity> entities@2;

  // Indicates what types of frame perception were run.
  array<FramePerceptionType> perception_types@3;
};

interface FramePerceptionHandler {
  // Callback for data that comes out of the analytics process.
  OnFramePerception@0(FramePerception frame_perception);
};

