libcamera v0.7.0+1-4ceceb68
Supporting cameras in Linux since 2019
Loading...
Searching...
No Matches
request.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: LGPL-2.1-or-later */
2/*
3 * Copyright (C) 2019, Google Inc.
4 *
5 * Request class private data
6 */
7
8#pragma once
9
10#include <chrono>
11#include <map>
12#include <memory>
13#include <stdint.h>
14#include <unordered_set>
15
18
19#include <libcamera/request.h>
20
21using namespace std::chrono_literals;
22
23namespace libcamera {
24
25class Camera;
26class FrameBuffer;
27
29{
31
32public:
34 ~Private();
35
36 Camera *camera() const { return camera_; }
37 bool hasPendingBuffers() const;
38
39 ControlList &metadata() { return metadata_; }
40
41 bool completeBuffer(FrameBuffer *buffer);
42 void complete();
43 void cancel();
44 void reset();
45
46 void prepare(std::chrono::milliseconds timeout = 0ms);
48
49private:
50 friend class PipelineHandler;
51 friend std::ostream &operator<<(std::ostream &out, const Request &r);
52
53 void doCancelRequest();
54 void emitPrepareCompleted();
55 void notifierActivated(FrameBuffer *buffer);
56 void timeout();
57
58 Camera *camera_;
59 bool cancelled_;
60 uint32_t sequence_ = 0;
61 bool prepared_ = false;
62
63 std::unordered_set<FrameBuffer *> pending_;
64 std::map<FrameBuffer *, EventNotifier> notifiers_;
65 std::unique_ptr<Timer> timer_;
66 ControlList metadata_;
67};
68
69} /* namespace libcamera */
#define LIBCAMERA_DECLARE_PUBLIC(klass)
Declare public data for a private class.
Definition class.h:57
Camera device.
Definition camera.h:115
Associate a list of ControlId with their values for an object.
Definition controls.h:409
Base class for private data managed through a d-pointer.
Definition class.h:65
Private()
Construct an instance of an Extensible class private data.
Definition class.cpp:194
Frame buffer data and its associated dynamic metadata.
Definition framebuffer.h:50
Create and manage cameras based on a set of media devices.
Definition pipeline_handler.h:34
Request private data.
Definition request.h:29
ControlList & metadata()
Retrieve the request's metadata.
Definition request.h:39
void prepare(std::chrono::milliseconds timeout=0ms)
Prepare the Request to be queued to the device.
Definition request.cpp:231
void reset()
Reset the request internal data to default values.
Definition request.cpp:181
void cancel()
Cancel a queued request.
Definition request.cpp:165
bool completeBuffer(FrameBuffer *buffer)
Complete a buffer for the request.
Definition request.cpp:106
Camera * camera() const
Retrieve the camera this request has been queued to.
Definition request.h:36
void complete()
Complete a queued request.
Definition request.cpp:128
Signal prepared
Request preparation completed Signal.
Definition request.h:47
friend std::ostream & operator<<(std::ostream &out, const Request &r)
Insert a text representation of a Request into an output stream.
Definition request.cpp:607
bool hasPendingBuffers() const
Check if a request has buffers yet to be completed.
Definition request.cpp:82
A frame capture request.
Definition request.h:30
Generic signal and slot communication mechanism.
Definition signal.h:39
File descriptor event notifier.
Top-level libcamera namespace.
Definition backtrace.h:17
Describes a frame capture request to be processed by a camera.
Generic timer.