cam: Implement OptMetadata
Implement support for the new '--metadata' option by printing the value of each metadata entry associated with a completed Request. As sample of the output, running on raspberry pi, looks like the following: 3050.205672 (30.01 fps) stream0 seq: 000033 bytesused: 720000 ScalerCrop = (0x2)/3280x2460 ExposureTime = 13969 AeLocked = true DigitalGain = 1.000721 Lux = 771.204224 ColourGains = [ 1.561101, 1.629698 ] ColourTemperature = 4289 SensorBlackLevels = [ 4096, 4096, 4096, 4096 ] ColourCorrectionMatrix = [ 1.691066, -0.599756, -0.091317, -0.437452, 1.983766, -0.546314, -0.083429, -0.722407, 1.805836 ] AnalogueGain = 2.000000 SensorTimestamp = 3050205672000 3050.238999 (30.01 fps) stream0 seq: 000034 bytesused: 720000 ScalerCrop = (0x2)/3280x2460 ExposureTime = 13969 AeLocked = true DigitalGain = 1.000709 Lux = 771.232422 ColourGains = [ 1.560868, 1.630029 ] ColourTemperature = 4289 SensorBlackLevels = [ 4096, 4096, 4096, 4096 ] ColourCorrectionMatrix = [ 1.691081, -0.599726, -0.091362, -0.437497, 1.983627, -0.546130, -0.083420, -0.722523, 1.805943 ] AnalogueGain = 2.000000 SensorTimestamp = 3050238999000 Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Reviewed-by: Hirokazu Honda <hiroh@chromium.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
parent
7df772f559
commit
b3a504e965
2 changed files with 15 additions and 1 deletions
|
@ -10,6 +10,8 @@
|
|||
#include <limits.h>
|
||||
#include <sstream>
|
||||
|
||||
#include <libcamera/control_ids.h>
|
||||
|
||||
#include "capture.h"
|
||||
#include "main.h"
|
||||
|
||||
|
@ -18,7 +20,8 @@ using namespace libcamera;
|
|||
Capture::Capture(std::shared_ptr<Camera> camera, CameraConfiguration *config,
|
||||
EventLoop *loop)
|
||||
: camera_(camera), config_(config), writer_(nullptr), last_(0), loop_(loop),
|
||||
queueCount_(0), captureCount_(0), captureLimit_(0)
|
||||
queueCount_(0), captureCount_(0), captureLimit_(0),
|
||||
printMetadata_(false)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -29,6 +32,7 @@ int Capture::run(const OptionsParser::Options &options)
|
|||
queueCount_ = 0;
|
||||
captureCount_ = 0;
|
||||
captureLimit_ = options[OptCapture].toInteger();
|
||||
printMetadata_ = options.isSet(OptMetadata);
|
||||
|
||||
if (!camera_) {
|
||||
std::cout << "Can't capture without a camera" << std::endl;
|
||||
|
@ -217,6 +221,15 @@ void Capture::processRequest(Request *request)
|
|||
|
||||
std::cout << info.str() << std::endl;
|
||||
|
||||
if (printMetadata_) {
|
||||
const ControlList &requestMetadata = request->metadata();
|
||||
for (const auto &ctrl : requestMetadata) {
|
||||
const ControlId *id = controls::controls.at(ctrl.first);
|
||||
std::cout << "\t" << id->name() << " = "
|
||||
<< ctrl.second.toString() << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
captureCount_++;
|
||||
if (captureLimit_ && captureCount_ >= captureLimit_) {
|
||||
loop_->exit(0);
|
||||
|
|
|
@ -47,6 +47,7 @@ private:
|
|||
unsigned int queueCount_;
|
||||
unsigned int captureCount_;
|
||||
unsigned int captureLimit_;
|
||||
bool printMetadata_;
|
||||
|
||||
std::vector<std::unique_ptr<libcamera::Request>> requests_;
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue