pipeline: ipa: raspberrypi: Handle any externally allocated FrameBuffer

Handle the case where a FrameBuffer that has been externally allocated
(i.e. not through the v4l2 video device) is passed into a Request.

We must store the buffer pointer in the stream internal buffer list to
identify when used.

Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
This commit is contained in:
Naushir Patuck 2020-09-18 10:42:33 +01:00 committed by Niklas Söderlund
parent dd0df6d739
commit 39798e8777
5 changed files with 73 additions and 29 deletions

View file

@ -352,7 +352,7 @@ void IPARPi::processEvent(const IPAOperationData &event)
IPAOperationData op;
op.operation = RPI_IPA_ACTION_STATS_METADATA_COMPLETE;
op.data = { bufferId & RPiIpaMask::ID };
op.data = { bufferId & RPiBufferMask::ID };
op.controls = { libcameraMetadata_ };
queueFrameAction.emit(0, op);
break;
@ -373,7 +373,7 @@ void IPARPi::processEvent(const IPAOperationData &event)
/* Ready to push the input buffer into the ISP. */
IPAOperationData op;
op.operation = RPI_IPA_ACTION_RUN_ISP;
op.data = { bayerbufferId & RPiIpaMask::ID };
op.data = { bayerbufferId & RPiBufferMask::ID };
queueFrameAction.emit(0, op);
break;
}
@ -700,7 +700,7 @@ void IPARPi::returnEmbeddedBuffer(unsigned int bufferId)
{
IPAOperationData op;
op.operation = RPI_IPA_ACTION_EMBEDDED_COMPLETE;
op.data = { bufferId & RPiIpaMask::ID };
op.data = { bufferId & RPiBufferMask::ID };
queueFrameAction.emit(0, op);
}