blob: a179f6ad1aa10828d54ad7b7c15add1bc037ae02 [file] [log] [blame]
// Copyright 2021 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.
// Datatypes and interfaces of document scanner API.
// NOTE: This mojom exists in two places and must be kept in sync:
// Chromium: //chromeos/services/machine_learning/public/mojom/
// Chrome OS: src/platform2/ml/mojom/
// Note: Other repos downstream of Chromium might also use this mojom.
// Example: A backwards-compatible mojom change (and corresponding
// implementation change) can be made in Chrome OS first, then replicated to the
// clients (Chromium, other downstream repos) later.
// Use //chromeos/services/machine_learning/public/mojom/roll_mojoms.sh to help
// replicate Chrome OS-side changes over to Chromium.
module chromeos.machine_learning.mojom;
import "ml/mojom/geometry.mojom";
import "ml/mojom/shared_memory.mojom";
// Status of the document scanner response.
[Stable, Extensible]
enum DocumentScannerResultStatus {
OK = 0,
ERROR = 1,
};
// The corner detection response.
// Next min field ID: 2
[Stable]
struct DetectCornersResult {
// Status of the result. Even when there is no corners detected, the detection
// can still be considered successful if there is no error occurs.
DocumentScannerResultStatus status@0;
// Detected document corners.
array<gfx.mojom.PointF> corners@1;
};
// The post processing response.
// Next min field ID: 2
[Stable]
struct DoPostProcessingResult {
// Status of the result.
DocumentScannerResultStatus status@0;
// Image data after processing. Will be in JPG format.
array<uint8> processed_jpeg_image@1;
};
// The mojom interface for performing document scanning.
// Next ordinal: 3
[Stable]
interface DocumentScanner {
// Detect document corners for given `nv12_image` which is in 256x256 size.
DetectCornersFromNV12Image@0(
mojo_base.mojom.ReadOnlySharedMemoryRegion nv12_image)
=> (DetectCornersResult result);
// Detect document corners for given `jpeg_image`.
DetectCornersFromJPEGImage@1(
mojo_base.mojom.ReadOnlySharedMemoryRegion jpeg_image)
=> (DetectCornersResult result);
// Do post processing such as rectification for the document region, contrast
// enhancement on the given `jpeg_image` according to document `corners`.
DoPostProcessing@2(mojo_base.mojom.ReadOnlySharedMemoryRegion jpeg_image,
array<gfx.mojom.PointF> corners)
=> (DoPostProcessingResult result);
};