summaryrefslogtreecommitdiff
path: root/package/gentoo
diff options
context:
space:
mode:
authorHirokazu Honda <hiroh@chromium.org>2021-11-24 03:39:47 +0900
committerJacopo Mondi <jacopo@jmondi.org>2021-12-06 17:41:45 +0100
commitc58662c5770e4c2b4446318295055fcbc04c1824 (patch)
tree1cd386867a7f825cba50f95f4f52239ebd2b6638 /package/gentoo
parent99bb610fd1b270f126a6b35c0231843973d8f35b (diff)
android: Introduce PlatformFrameBufferAllocator
The existing FrameBufferAllocator is not allowed to allocate a new buffer while Camera is running. This introduces PlatformFrameBufferAllocator. It allocates FrameBuffer using cros::CameraBufferManager on ChromeOS and gralloc on non ChromeOS platform. The allocated FrameBuffer owns the underlying buffer but must be destroyed before PlatformFrameBufferAllocator is destroyed. Signed-off-by: Hirokazu Honda <hiroh@chromium.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
Diffstat (limited to 'package/gentoo')
0 files changed, 0 insertions, 0 deletions
an> KMSSink : public FrameSink { public: KMSSink(const std::string &connectorName); void mapBuffer(libcamera::FrameBuffer *buffer) override; int configure(const libcamera::CameraConfiguration &config) override; int start() override; int stop() override; bool processRequest(libcamera::Request *request) override; private: class Request { public: Request(std::unique_ptr<DRM::AtomicRequest> drmRequest, libcamera::Request *camRequest) : drmRequest_(std::move(drmRequest)), camRequest_(camRequest) { } std::unique_ptr<DRM::AtomicRequest> drmRequest_; libcamera::Request *camRequest_; }; int selectPipeline(const libcamera::PixelFormat &format); int configurePipeline(const libcamera::PixelFormat &format); bool testModeSet(DRM::FrameBuffer *drmBuffer, const libcamera::Rectangle &src, const libcamera::Rectangle &dst); bool setupComposition(DRM::FrameBuffer *drmBuffer); void requestComplete(DRM::AtomicRequest *request); DRM::Device dev_; const DRM::Connector *connector_; const DRM::Crtc *crtc_; const DRM::Plane *plane_; const DRM::Mode *mode_; libcamera::PixelFormat format_; libcamera::Size size_; unsigned int stride_; std::optional<unsigned int> colorEncoding_; std::optional<unsigned int> colorRange_; libcamera::Rectangle src_; libcamera::Rectangle dst_; std::map<libcamera::FrameBuffer *, std::unique_ptr<DRM::FrameBuffer>> buffers_; std::mutex lock_; std::unique_ptr<Request> pending_; std::unique_ptr<Request> queued_; std::unique_ptr<Request> active_; };