| Index: extensions/common/api/media_perception_private.idl
|
| diff --git a/extensions/common/api/media_perception_private.idl b/extensions/common/api/media_perception_private.idl
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..07ea801c804d2565f9f10f5af1a4f7a9c03ce874
|
| --- /dev/null
|
| +++ b/extensions/common/api/media_perception_private.idl
|
| @@ -0,0 +1,170 @@
|
| +// Copyright 2017 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.
|
| +
|
| +// Private API for receiving real-time media perception information.
|
| +[platforms=("chromeos")]
|
| +namespace mediaPerceptionPrivate {
|
| + enum Status {
|
| + // The media analytics process is waiting to be launched.
|
| + UNINITIALIZED,
|
| +
|
| + // The analytics process is running and the media processing pipeline is
|
| + // started, but it is not yet receiving image frames. This is a
|
| + // transitional state between SUSPENDED and RUNNING for the time it takes
|
| + // to warm up the media processing pipeline, which can take anywhere from
|
| + // a few seconds to a minute.
|
| + // Note: STARTED is the initial reply to SetState RUNNING.
|
| + STARTED,
|
| +
|
| + // The analytics process is running and the media processing pipeling is
|
| + // injesting image frames. At this point, MediaPerception signals should
|
| + // be coming over D-Bus.
|
| + RUNNING,
|
| +
|
| + // Analytics process is running and the media processing pipeline is ready
|
| + // to be set to state RUNNING. The D-Bus communications are enabled but
|
| + // the media processing pipeline is suspended.
|
| + SUSPENDED
|
| + };
|
| +
|
| + // The system and configuration state of the analytics process and v4lplugin.
|
| + dictionary State {
|
| + Status status;
|
| +
|
| + // Optional $(ref:setState) parameter. Specifies the video device the media
|
| + // analytics process should open while the media processing pipeline is
|
| + // starting. To set this parameter, status has to be RUNNING.
|
| + DOMString? deviceContext;
|
| + };
|
| +
|
| + dictionary Point {
|
| + // The horizontal distance from the top left corner of the image.
|
| + double? x;
|
| +
|
| + // The vertical distance from the top left corner of the image.
|
| + double? y;
|
| + };
|
| +
|
| + dictionary BoundingBox {
|
| + // Specifies whether the points are normalized to the size of the image.
|
| + boolean? normalized;
|
| +
|
| + // The two points that define the corners of a bounding box.
|
| + Point? topLeft;
|
| + Point? bottomRight;
|
| + };
|
| +
|
| + enum EntityType {
|
| + UNSPECIFIED,
|
| + FACE,
|
| + PERSON
|
| + };
|
| +
|
| + dictionary Entity {
|
| + // A unique id associated with the detected entity, which can be used to
|
| + // track the entity over time.
|
| + long? id;
|
| +
|
| + EntityType? type;
|
| +
|
| + // Minimum box which captures entire detected entity.
|
| + BoundingBox? boundingBox;
|
| +
|
| + // A value for the quality of this detection.
|
| + double? confidence;
|
| +
|
| + // The estimated depth of the entity from the camera.
|
| + double? depthInMeters;
|
| + };
|
| +
|
| + // The set of computer vision metadata for an image frame.
|
| + dictionary FramePerception {
|
| + long? frameId;
|
| +
|
| + long? frameWidthInPx;
|
| + long? frameHeightInPx;
|
| +
|
| + // The timestamp associated with the frame (when its recieved by the
|
| + // analytics process).
|
| + double? timestamp;
|
| +
|
| + // The list of entities detected in this frame.
|
| + Entity[]? entities;
|
| + };
|
| +
|
| + dictionary MediaPerception {
|
| + // The time the media perception data was emitted by the media processing
|
| + // pipeline. This value will be greater than the timestamp stored within
|
| + // the FramePerception dictionary and the difference between them can be
|
| + // viewed as the processing time for a single frame.
|
| + double? timestamp;
|
| +
|
| + // An array of framePerceptions.
|
| + FramePerception[]? framePerceptions;
|
| + };
|
| +
|
| + enum ImageFormat {
|
| + // Image represented by RGB data channels.
|
| + RAW,
|
| + PNG,
|
| + JPEG
|
| + };
|
| +
|
| + dictionary ImageFrame {
|
| + long? width;
|
| + long? height;
|
| +
|
| + ImageFormat? format;
|
| +
|
| + long? dataLength;
|
| +
|
| + // The bytes of the image frame.
|
| + ArrayBuffer? frame;
|
| + };
|
| +
|
| + dictionary PerceptionSample {
|
| + // The video analytics FramePerception for the associated image frame
|
| + // data.
|
| + FramePerception? framePerception;
|
| +
|
| + // The image frame data for the associated FramePerception object.
|
| + ImageFrame? imageFrame;
|
| + };
|
| +
|
| + dictionary Diagnostics {
|
| + // A buffer of image frames and the associated video analytics information
|
| + // that can be used to diagnose a malfunction.
|
| + PerceptionSample[]? perceptionSamples;
|
| + };
|
| +
|
| + callback StateCallback = void(State state);
|
| +
|
| + callback DiagnosticsCallback = void(Diagnostics diagnostics);
|
| +
|
| + interface Functions {
|
| + // Gets the status of the media perception process.
|
| + // |callback| : The current state of the system.
|
| + static void getState(StateCallback callback);
|
| +
|
| + // Sets the desired state of the system.
|
| + // |state| : A dictionary with the desired new state. The only settable
|
| + // states are RUNNING and SUSPENDED.
|
| + // |callback| : Invoked with the State of the system after setting it. Can
|
| + // be used to verify the state was set as desired.
|
| + static void setState(State state, StateCallback callback);
|
| +
|
| + // Get a diagnostics buffer out of the video analytics process.
|
| + // |callback| : Returns a Diagnostics dictionary object.
|
| + static void getDiagnostics(DiagnosticsCallback callback);
|
| + };
|
| +
|
| + interface Events {
|
| + // Fired when media perception information is received from the media
|
| + // analytics process.
|
| + // |mediaPerception| : The dictionary which contains a dump of everything
|
| + // the analytics process has detected or determined from the incoming media
|
| + // streams.
|
| + static void onMediaPerception(MediaPerception mediaPerception);
|
| + };
|
| +};
|
|
|