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:
Niklas Söderlund
2019-10-08 02:45:29 +02:00
committed by Laurent Pinchart
parent abee318ce8
commit f3022d91dc
2 changed files with 16 additions and 0 deletions

View File

@@ -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_;

View File

@@ -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