[libcamera-devel] [PATCH 29/30] cam: Add camera index to file name of capture frames
Kieran Bingham
kieran.bingham at ideasonboard.com
Mon Jul 12 18:12:51 CEST 2021
On 07/07/2021 03:19, Laurent Pinchart wrote:
> To prepare for multi-camera support, extend the file naming scheme for
> captured frames to include the camera index in additiona to the stream
s/additiona/additional/
> name and frame number.
>
Oh look - another one of my earlier requests come true already.
Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---
> src/cam/camera_session.cpp | 9 ++++++---
> src/cam/camera_session.h | 4 +++-
> src/cam/main.cpp | 4 ++--
> 3 files changed, 11 insertions(+), 6 deletions(-)
>
> diff --git a/src/cam/camera_session.cpp b/src/cam/camera_session.cpp
> index f2383567af3b..90261a8cde2e 100644
> --- a/src/cam/camera_session.cpp
> +++ b/src/cam/camera_session.cpp
> @@ -22,9 +22,11 @@ using namespace libcamera;
>
> CameraSession::CameraSession(CameraManager *cm,
> const std::string &cameraId,
> + unsigned int cameraIndex,
> const OptionsParser::Options &options)
> - : options_(options), last_(0), queueCount_(0), captureCount_(0),
> - captureLimit_(0), printMetadata_(false)
> + : options_(options), cameraIndex_(cameraIndex), last_(0),
> + queueCount_(0), captureCount_(0), captureLimit_(0),
> + printMetadata_(false)
> {
> char *endptr;
> unsigned long index = strtoul(cameraId.c_str(), &endptr, 10);
> @@ -152,7 +154,8 @@ int CameraSession::start()
> streamName_.clear();
> for (unsigned int index = 0; index < config_->size(); ++index) {
> StreamConfiguration &cfg = config_->at(index);
> - streamName_[cfg.stream()] = "stream" + std::to_string(index);
> + streamName_[cfg.stream()] = "cam" + std::to_string(cameraIndex_)
> + + "-stream" + std::to_string(index);
> }
>
> camera_->requestCompleted.connect(this, &CameraSession::requestComplete);
> diff --git a/src/cam/camera_session.h b/src/cam/camera_session.h
> index f137279ab421..12449c98e582 100644
> --- a/src/cam/camera_session.h
> +++ b/src/cam/camera_session.h
> @@ -28,7 +28,7 @@ class CameraSession
> {
> public:
> CameraSession(libcamera::CameraManager *cm,
> - const std::string &cameraId,
> + const std::string &cameraId, unsigned int cameraIndex,
> const OptionsParser::Options &options);
> ~CameraSession();
>
> @@ -60,6 +60,8 @@ private:
>
> std::map<const libcamera::Stream *, std::string> streamName_;
> std::unique_ptr<BufferWriter> writer_;
> + unsigned int cameraIndex_;
> +
> uint64_t last_;
>
> unsigned int queueCount_;
> diff --git a/src/cam/main.cpp b/src/cam/main.cpp
> index 7688fa5540ea..96f55831ca69 100644
> --- a/src/cam/main.cpp
> +++ b/src/cam/main.cpp
> @@ -136,7 +136,7 @@ int CamApp::parseOptions(int argc, char *argv[])
> "If the file name ends with a '/', it sets the directory in which\n"
> "to write files, using the default file name. Otherwise it sets the\n"
> "full file path and name. The first '#' character in the file name\n"
> - "is expanded to the stream name and frame sequence number.\n"
> + "is expanded to the camera index, stream name and frame sequence number.\n"
> "The default file name is 'frame-#.bin'.",
> "file", ArgumentOptional, "filename", false,
> OptCamera);
> @@ -201,7 +201,7 @@ int CamApp::run()
> if (options_.isSet(OptCamera)) {
> const OptionValue &camera = options_[OptCamera];
> session = std::make_unique<CameraSession>(cm_.get(),
> - camera.toString(),
> + camera.toString(), 0,
> camera.children());
> if (!session->isValid()) {
> std::cout << "Failed to create camera session" << std::endl;
>
More information about the libcamera-devel
mailing list