IPU3Event and IPU3Action use single ControlList for both libcamera and V4L2 controls, and it's content could be either one based on the context. Extend IPU3Event and IPU3Action for sensor V4L2 controls, and preserve the original one for only libcamera Controls to make the content of an event more specific. Signed-off-by: Han-Lin Chen <hanlinchen@chromium.org> [Jean-Michel: remove lensControls from the original patch] Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
62 lines
1.4 KiB
Plaintext
62 lines
1.4 KiB
Plaintext
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
|
|
|
/*
|
|
* \todo Document the interface and remove the related EXCLUDE_PATTERNS entry.
|
|
*/
|
|
|
|
module ipa.ipu3;
|
|
|
|
import "include/libcamera/ipa/core.mojom";
|
|
|
|
enum IPU3Operations {
|
|
ActionSetSensorControls = 1,
|
|
ActionParamFilled = 2,
|
|
ActionMetadataReady = 3,
|
|
EventProcessControls = 4,
|
|
EventStatReady = 5,
|
|
EventFillParams = 6,
|
|
};
|
|
|
|
struct IPU3Event {
|
|
IPU3Operations op;
|
|
uint32 frame;
|
|
int64 frameTimestamp;
|
|
uint32 bufferId;
|
|
libcamera.ControlList controls;
|
|
libcamera.ControlList sensorControls;
|
|
};
|
|
|
|
struct IPU3Action {
|
|
IPU3Operations op;
|
|
libcamera.ControlList controls;
|
|
libcamera.ControlList sensorControls;
|
|
};
|
|
|
|
struct IPAConfigInfo {
|
|
libcamera.IPACameraSensorInfo sensorInfo;
|
|
libcamera.ControlInfoMap sensorControls;
|
|
libcamera.Size bdsOutputSize;
|
|
libcamera.Size iif;
|
|
};
|
|
|
|
interface IPAIPU3Interface {
|
|
init(libcamera.IPASettings settings,
|
|
libcamera.IPACameraSensorInfo sensorInfo,
|
|
libcamera.ControlInfoMap sensorControls)
|
|
=> (int32 ret, libcamera.ControlInfoMap ipaControls);
|
|
start() => (int32 ret);
|
|
stop();
|
|
|
|
configure(IPAConfigInfo configInfo)
|
|
=> (int32 ret, libcamera.ControlInfoMap ipaControls);
|
|
|
|
mapBuffers(array<libcamera.IPABuffer> buffers);
|
|
unmapBuffers(array<uint32> ids);
|
|
|
|
[async] processEvent(IPU3Event ev);
|
|
};
|
|
|
|
interface IPAIPU3EventInterface {
|
|
queueFrameAction(uint32 frame, IPU3Action action);
|
|
};
|