#pragma once #include #include #include #include "utils/dma_alloc.h" namespace rk3588 { class FrameBuffer { public: struct Plane { uint8_t* data = nullptr; int stride = 0; int size = 0; int offset = 0; }; FrameBuffer() = default; FrameBuffer(int dma_fd, std::vector planes, std::shared_ptr owner = nullptr) : dma_fd_(dma_fd), planes_(std::move(planes)), owner_(std::move(owner)) {} int DmaFd() const { return dma_fd_; } void SetDmaFd(int dma_fd) { dma_fd_ = dma_fd; } const std::vector& Planes() const { return planes_; } void SetPlanes(std::vector planes) { planes_ = std::move(planes); } const std::shared_ptr& Owner() const { return owner_; } void SetOwner(std::shared_ptr owner) { owner_ = std::move(owner); } void SyncStart() const { if (dma_fd_ >= 0) { DmaSyncStartFd(dma_fd_); } } void SyncEnd() const { if (dma_fd_ >= 0) { DmaSyncEndFd(dma_fd_); } } private: int dma_fd_ = -1; std::vector planes_{}; std::shared_ptr owner_; }; } // namespace rk3588