/* SPDX-License-Identifier: LGPL-2.1-or-later */ /* * Copyright (C) 2020, Google Inc. * * frames.h - Intel IPU3 Frames helper */ #pragma once #include #include #include #include #include #include namespace libcamera { class FrameBuffer; class IPAProxy; class PipelineHandler; class Request; class V4L2VideoDevice; struct IPABuffer; class IPU3Frames { public: struct Info { unsigned int id; Request *request; FrameBuffer *rawBuffer; FrameBuffer *paramBuffer; FrameBuffer *statBuffer; ControlList effectiveSensorControls; bool paramDequeued; bool metadataProcessed; }; IPU3Frames(); void init(const std::vector> ¶mBuffers, const std::vector> &statBuffers); void clear(); Info *create(Request *request); void remove(Info *info); bool tryComplete(Info *info); Info *find(unsigned int id); Info *find(FrameBuffer *buffer); Signal<> bufferAvailable; private: std::queue availableParamBuffers_; std::queue availableStatBuffers_; std::map> frameInfo_; }; } /* namespace libcamera */