blob: 27b4d507f37a370afbb135689564409fbb795617 [file] [log] [blame]
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library fuchsia.hardware.camerahwaccel;
enum FrameStatus : uint8 {
OK = 0;
ERROR_FRAME = 1;
ERROR_BUFFER_FULL = 2;
};
enum TaskRemoveStatus : uint8 {
OK = 0;
ERROR_INVALID = 1;
};
struct FrameMetadata {
// The value of the system monotonic clock at the time the frame data was received by the
// driver.
uint64 timestamp;
uint32 image_format_index;
uint32 input_buffer_index;
// The value of the system monotonic clock at the time the root frame associated with this frame
// was received by the ISP driver.
uint64 capture_timestamp;
};
struct FrameAvailableInfo {
FrameStatus frame_status;
uint32 buffer_id;
FrameMetadata metadata;
};
[Transport = "Banjo", BanjoLayout = "ddk-callback"]
protocol HwAccelFrameCallback {
// This is called by the camera HW Accel drivers (gdc, ge2d, ...), every time a
// frame is ready to be consumed.
FrameReady(FrameAvailableInfo info);
};
// This is the same signature as the Frame callback above, but separating this, in
// case we want to change things around later.
[Transport = "Banjo", BanjoLayout = "ddk-callback"]
protocol HwAccelResChangeCallback {
// This is called by the camera HW Accel drivers (gdc, ge2d, ...), every time a
// change of resolution completes.
FrameResolutionChanged(FrameAvailableInfo info);
};
[Transport = "Banjo", BanjoLayout = "ddk-callback"]
protocol HwAccelRemoveTaskCallback {
// This is called by the camera HW Accel drivers (gdc, ge2d, ...), every time a
// task is released.
TaskRemoved(TaskRemoveStatus status);
};