@@ -388,12 +388,7 @@ int CameraSession::startCapture()
allocator_->buffers(stream);
const std::unique_ptr<FrameBuffer> &buffer = buffers[i];
- ret = request->addBuffer(stream, buffer.get());
- if (ret < 0) {
- std::cerr << "Can't set buffer for request"
- << std::endl;
- return ret;
- }
+ request->enableStream(stream, true);
if (sink_)
sink_->mapBuffer(buffer.get());
@@ -418,6 +413,15 @@ int CameraSession::startCapture()
return ret;
}
+ for (const StreamConfiguration &cfg : *config_) {
+ Stream *stream = cfg.stream();
+ const std::vector<std::unique_ptr<FrameBuffer>> &buffers =
+ allocator_->buffers(stream);
+
+ for (const auto &buffer : buffers)
+ camera_->addBuffer(stream, buffer.get());
+ }
+
for (std::unique_ptr<Request> &request : requests_) {
ret = queueRequest(request.get());
if (ret < 0) {
@@ -548,6 +552,13 @@ void CameraSession::processRequest(Request *request)
void CameraSession::requeueRequest(Request *request)
{
- request->reuse(Request::ReuseBuffers);
+ for (const auto &[stream, buffer] : request->buffers())
+ camera_->addBuffer(stream, buffer);
+
+ request->reuse();
+
+ for (const auto &cfg : *config_)
+ request->enableStream(cfg.stream(), true);
+
queueRequest(request);
}
Convert the `cam` application to use the new buffer pool interface of cameras. Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com> --- src/apps/cam/camera_session.cpp | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-)