cam: Add camera index to file name of capture frames
To prepare for multi-camera support, extend the file naming scheme for captured frames to include the camera index in addition to the stream name and frame number. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
parent
7dab1fa58f
commit
721f4b03d8
3 changed files with 11 additions and 6 deletions
|
@ -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);
|
||||
|
|
|
@ -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_;
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue