ipa: rkisp1: Replace event-based ops with dedicated functions

The IPARkISP1Interface currently uses event-type based structures in
order to communicate with the pipeline-handler (and vice-versa).
Replace the event based structures with dedicated functions associated
to each operation.

The translated naming scheme of operations to dedicated functions:
  ActionV4L2Set         => setSensorControls
  ActionParamFilled     => paramsBufferReady
  ActionMetadata        => metdataReady
  EventSignalStatBuffer => processStatsBuffer()
  EventQueueRequest     => queueRequest()

The lexical of IPARkISP1::metadataReady() will now conflict with the
metadataReady Signal being introduced in this patch as part of the
interface change. Hence, rename IPARkISP1::metadataReady() to
IPARkISP1::prepareReady() to prevent the conflict.

Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
Tested-by: Paul Elder <paul.elder@ideasonboard.com>
This commit is contained in:
Umang Jain
2022-03-23 19:56:13 +05:30
parent db269cc4b3
commit c7d4599565
3 changed files with 59 additions and 131 deletions
+7 -24
View File
@@ -8,28 +8,6 @@ module ipa.rkisp1;
import "include/libcamera/ipa/core.mojom";
enum RkISP1Operations {
ActionV4L2Set = 1,
ActionParamFilled = 2,
ActionMetadata = 3,
EventSignalStatBuffer = 4,
EventQueueRequest = 5,
};
struct RkISP1Event {
RkISP1Operations op;
uint32 frame;
uint32 bufferId;
libcamera.ControlList controls;
libcamera.ControlList sensorControls;
};
struct RkISP1Action {
RkISP1Operations op;
libcamera.ControlList controls;
libcamera.ControlList sensorControls;
};
interface IPARkISP1Interface {
init(libcamera.IPASettings settings,
uint32 hwRevision)
@@ -45,9 +23,14 @@ interface IPARkISP1Interface {
mapBuffers(array<libcamera.IPABuffer> buffers);
unmapBuffers(array<uint32> ids);
[async] processEvent(RkISP1Event ev);
[async] queueRequest(uint32 frame, uint32 bufferId,
libcamera.ControlList reqControls);
[async] processStatsBuffer(uint32 frame, uint32 bufferId,
libcamera.ControlList sensorControls);
};
interface IPARkISP1EventInterface {
queueFrameAction(uint32 frame, RkISP1Action action);
paramsBufferReady(uint32 frame);
setSensorControls(uint32 frame, libcamera.ControlList sensorControls);
metadataReady(uint32 frame, libcamera.ControlList metadata);
};