libcamera: request: Add metadata information
A new ControlList container is needed to hold metadata coming out of the IPA. The list of supported controls in this list is expected to grow, so for now do not add a validator for the list. Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
committed by
Laurent Pinchart
parent
abee318ce8
commit
f3022d91dc
@@ -37,6 +37,7 @@ public:
|
||||
~Request();
|
||||
|
||||
ControlList &controls() { return *controls_; }
|
||||
ControlList &metadata() { return *metadata_; }
|
||||
const std::map<Stream *, Buffer *> &buffers() const { return bufferMap_; }
|
||||
int addBuffer(std::unique_ptr<Buffer> buffer);
|
||||
Buffer *findBuffer(Stream *stream) const;
|
||||
@@ -58,6 +59,7 @@ private:
|
||||
Camera *camera_;
|
||||
CameraControlValidator *validator_;
|
||||
ControlList *controls_;
|
||||
ControlList *metadata_;
|
||||
std::map<Stream *, Buffer *> bufferMap_;
|
||||
std::unordered_set<Buffer *> pending_;
|
||||
|
||||
|
||||
@@ -65,6 +65,11 @@ Request::Request(Camera *camera, uint64_t cookie)
|
||||
*/
|
||||
validator_ = new CameraControlValidator(camera);
|
||||
controls_ = new ControlList(validator_);
|
||||
|
||||
/**
|
||||
* \todo: Add a validator for metadata controls.
|
||||
*/
|
||||
metadata_ = new ControlList(nullptr);
|
||||
}
|
||||
|
||||
Request::~Request()
|
||||
@@ -74,6 +79,7 @@ Request::~Request()
|
||||
delete buffer;
|
||||
}
|
||||
|
||||
delete metadata_;
|
||||
delete controls_;
|
||||
delete validator_;
|
||||
}
|
||||
@@ -161,6 +167,14 @@ Buffer *Request::findBuffer(Stream *stream) const
|
||||
return it->second;
|
||||
}
|
||||
|
||||
/**
|
||||
* \fn Request::metadata()
|
||||
* \brief Retrieve the request's metadata
|
||||
* \todo Offer a read-only API towards applications while keeping a read/write
|
||||
* API internally.
|
||||
* \return The metadata associated with the request
|
||||
*/
|
||||
|
||||
/**
|
||||
* \fn Request::cookie()
|
||||
* \brief Retrieve the cookie set when the request was created
|
||||
|
||||
Reference in New Issue
Block a user