pipeline: rpi: Add Recurrent and Needs32bitConv flags to RPi::Stream

Add a new "Recurrent" stream flag. This flag indicates the stream buffer
handling/management happend from the pipeline handler exclusively. This
is used for TDN/Stitch and Config streams.

Add a new Needs32bitConv stream flag to indicate that this stream needs
a software postprocessing conversion run on it before returning out to
the application.

Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
Reviewed-by: David Plowman <david.plowman@raspberrypi.com>
Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
Naushir Patuck 2023-10-13 08:48:23 +01:00 committed by Kieran Bingham
parent f4839fb3a3
commit cc71d12a18
2 changed files with 13 additions and 2 deletions

View file

@ -155,7 +155,7 @@ int Stream::queueBuffer(FrameBuffer *buffer)
void Stream::returnBuffer(FrameBuffer *buffer)
{
if (!(flags_ & StreamFlag::External)) {
if (!(flags_ & StreamFlag::External) && !(flags_ & StreamFlag::Recurrent)) {
/* For internal buffers, simply requeue back to the device. */
queueToDevice(buffer);
return;
@ -217,7 +217,7 @@ int Stream::queueAllBuffers()
{
int ret;
if (flags_ & StreamFlag::External)
if ((flags_ & StreamFlag::External) || (flags_ & StreamFlag::Recurrent))
return 0;
while (!availableBuffers_.empty()) {

View file

@ -70,6 +70,17 @@ public:
* to the pipeline handler when requested.
*/
RequiresMmap = (1 << 2),
/*
* Indicates a stream that needs buffers recycled every frame internally
* in the pipeline handler, e.g. stitch, TDN, config. All buffer
* management will be handled by the pipeline handler.
*/
Recurrent = (1 << 3),
/*
* Indicates that the output stream needs a software format conversion
* to be applied after ISP processing.
*/
Needs32bitConv = (1 << 4),
};
using StreamFlags = Flags<StreamFlag>;