blob: e8688358136c0799449fd9d5e00e16719918d685 [file] [log] [blame]
// 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.
// Next min version: 4
module cros.mojom;
import "mojo/camera_common.mojom";
import "mojo/gpu/jpeg_encode_accelerator.mojom";
import "mojo/gpu/mjpeg_decode_accelerator.mojom";
// The CrOS camera HAL v3 Mojo dispatcher. The dispatcher acts as a proxy and
// waits for the server and the clients to register. There can only be one
// server registered, with multiple clients requesting connections to the
// server. For each client, the dispatcher is responsible for creating a Mojo
// channel to the server and pass the established Mojo channel to the client in
// order to set up a Mojo channel between the client and the server.
//
// Next method ID: 4
interface CameraHalDispatcher {
// A CameraHalServer calls RegisterServer to register itself with the
// dispatcher.
RegisterServer@0(CameraHalServer server);
// A CameraHalClient calls RegisterClient to register itself with the
// dispatcher.
RegisterClient@1(CameraHalClient client);
// Get MjpegDecodeAccelerator from dispatcher.
[MinVersion = 1] GetMjpegDecodeAccelerator@2
(MjpegDecodeAccelerator& accerlator_request);
// Get JpegEncodeAccelerator from dispatcher.
[MinVersion = 2] GetJpegEncodeAccelerator@3
(JpegEncodeAccelerator& accerlator_request);
};
// The CrOS camera HAL v3 Mojo server.
//
// Next method ID: 2
interface CameraHalServer {
// A caller calls CreateChannel to create a new Mojo channel to the camera
// HAL v3 adapter. Upon successfully binding of |camera_module_request|, the
// caller will have a established Mojo channel to the camera HAL v3 adapter
// process.
CreateChannel@0(CameraModule& camera_module_request);
// Enable or disable tracing.
[MinVersion=3]
SetTracingEnabled@1(bool enabled);
};
// The CrOS camera HAL v3 Mojo client.
//
// Next method ID: 1
interface CameraHalClient {
// A caller calls SetUpChannel to dispatch the established Mojo channel
// |camera_module_ptr| to the client. The CameraHalClient can create a
// Mojo channel to the camera HAL v3 adapter process with |camera_module_ptr|.
// SetUpChannel may be called multiple times. In cases such as the
// CameraHalServer which holds the original Mojo channel crashes,
// CameraHalDispatcher will call SetUpChannel again once a new CameraHalServer
// reconnects.
SetUpChannel@0(CameraModule camera_module_ptr);
};