[libcamera-devel] [PATCH 12/21] qcam: Use Qt qInfo() and qWarning() logging facilities
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Mon Mar 23 15:21:56 CET 2020
Replace manual usage of std::cout and std::cerr with the Qt logging
facilities. This allows redirection log output if needed, and integrates
better with Qt.
Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
---
src/qcam/main.cpp | 8 +++----
src/qcam/main_window.cpp | 45 ++++++++++++++++++++--------------------
2 files changed, 26 insertions(+), 27 deletions(-)
diff --git a/src/qcam/main.cpp b/src/qcam/main.cpp
index 297453914ae9..862d714f467c 100644
--- a/src/qcam/main.cpp
+++ b/src/qcam/main.cpp
@@ -5,11 +5,11 @@
* main.cpp - cam - The libcamera swiss army knife
*/
-#include <iostream>
#include <signal.h>
#include <string.h>
#include <QApplication>
+#include <QtDebug>
#include <libcamera/camera_manager.h>
@@ -18,7 +18,7 @@
void signalHandler(int signal)
{
- std::cout << "Exiting" << std::endl;
+ qInfo() << "Exiting";
qApp->quit();
}
@@ -65,8 +65,8 @@ int main(int argc, char **argv)
ret = cm->start();
if (ret) {
- std::cout << "Failed to start camera manager: "
- << strerror(-ret) << std::endl;
+ qInfo() << "Failed to start camera manager:"
+ << strerror(-ret);
return EXIT_FAILURE;
}
diff --git a/src/qcam/main_window.cpp b/src/qcam/main_window.cpp
index ed8301502fb2..184345b0e2a6 100644
--- a/src/qcam/main_window.cpp
+++ b/src/qcam/main_window.cpp
@@ -8,7 +8,6 @@
#include "main_window.h"
#include <iomanip>
-#include <iostream>
#include <string>
#include <sys/mman.h>
@@ -24,6 +23,7 @@
#include <QTimer>
#include <QToolBar>
#include <QToolButton>
+#include <QtDebug>
#include <libcamera/camera_manager.h>
#include <libcamera/version.h>
@@ -177,11 +177,11 @@ void MainWindow::switchCamera(int index)
const std::shared_ptr<Camera> &cam = cameras[index];
if (cam->acquire()) {
- std::cout << "Failed to acquire camera " << cam->name() << std::endl;
+ qInfo() << "Failed to acquire camera" << cam->name().c_str();
return;
}
- std::cout << "Switching to camera " << cam->name() << std::endl;
+ qInfo() << "Switching to camera" << cam->name().c_str();
/*
* Stop the capture session, release the current camera, replace it with
@@ -236,13 +236,12 @@ int MainWindow::openCamera()
/* Get and acquire the camera. */
camera_ = cm_->get(cameraName);
if (!camera_) {
- std::cout << "Camera " << cameraName << " not found"
- << std::endl;
+ qInfo() << "Camera" << cameraName.c_str() << "not found";
return -ENODEV;
}
if (camera_->acquire()) {
- std::cout << "Failed to acquire camera" << std::endl;
+ qInfo() << "Failed to acquire camera";
camera_.reset();
return -EBUSY;
}
@@ -296,18 +295,18 @@ int MainWindow::startCapture()
CameraConfiguration::Status validation = config_->validate();
if (validation == CameraConfiguration::Invalid) {
- std::cerr << "Failed to create valid camera configuration";
+ qWarning() << "Failed to create valid camera configuration";
return -EINVAL;
}
if (validation == CameraConfiguration::Adjusted) {
- std::cout << "Stream size adjusted to "
- << cfg.size.toString() << std::endl;
+ qInfo() << "Stream size adjusted to"
+ << cfg.size.toString().c_str();
}
ret = camera_->configure(config_.get());
if (ret < 0) {
- std::cout << "Failed to configure camera" << std::endl;
+ qInfo() << "Failed to configure camera";
return ret;
}
@@ -316,7 +315,7 @@ int MainWindow::startCapture()
ret = viewfinder_->setFormat(cfg.pixelFormat,
QSize(cfg.size.width, cfg.size.height));
if (ret < 0) {
- std::cout << "Failed to set viewfinder format" << std::endl;
+ qInfo() << "Failed to set viewfinder format";
return ret;
}
@@ -326,7 +325,7 @@ int MainWindow::startCapture()
allocator_ = new FrameBufferAllocator(camera_);
ret = allocator_->allocate(stream);
if (ret < 0) {
- std::cerr << "Failed to allocate capture buffers" << std::endl;
+ qWarning() << "Failed to allocate capture buffers";
return ret;
}
@@ -334,14 +333,14 @@ int MainWindow::startCapture()
for (const std::unique_ptr<FrameBuffer> &buffer : allocator_->buffers(stream)) {
Request *request = camera_->createRequest();
if (!request) {
- std::cerr << "Can't create request" << std::endl;
+ qWarning() << "Can't create request";
ret = -ENOMEM;
goto error;
}
ret = request->addBuffer(stream, buffer.get());
if (ret < 0) {
- std::cerr << "Can't set buffer for request" << std::endl;
+ qWarning() << "Can't set buffer for request";
goto error;
}
@@ -364,7 +363,7 @@ int MainWindow::startCapture()
ret = camera_->start();
if (ret) {
- std::cout << "Failed to start capture" << std::endl;
+ qInfo() << "Failed to start capture";
goto error;
}
@@ -374,7 +373,7 @@ int MainWindow::startCapture()
for (Request *request : requests) {
ret = camera_->queueRequest(request);
if (ret < 0) {
- std::cerr << "Can't queue request" << std::endl;
+ qWarning() << "Can't queue request";
goto error_disconnect;
}
}
@@ -417,7 +416,7 @@ void MainWindow::stopCapture()
int ret = camera_->stop();
if (ret)
- std::cout << "Failed to stop capture" << std::endl;
+ qInfo() << "Failed to stop capture";
camera_->requestCompleted.disconnect(this, &MainWindow::requestComplete);
@@ -513,11 +512,11 @@ void MainWindow::processCapture()
fps = lastBufferTime_ && fps ? 1000000000.0 / fps : 0.0;
lastBufferTime_ = metadata.timestamp;
- std::cout << "seq: " << std::setw(6) << std::setfill('0') << metadata.sequence
- << " bytesused: " << metadata.planes[0].bytesused
- << " timestamp: " << metadata.timestamp
- << " fps: " << std::fixed << std::setprecision(2) << fps
- << std::endl;
+ qInfo() << "seq:" << qSetFieldWidth(6) << qSetPadChar('0')
+ << metadata.sequence << Qt::reset
+ << "bytesused:" << metadata.planes[0].bytesused
+ << "timestamp:" << metadata.timestamp
+ << "fps:" << Qt::fixed << qSetRealNumberPrecision(2) << fps;
/* Display the buffer and requeue it to the camera. */
display(buffer);
@@ -542,7 +541,7 @@ void MainWindow::queueRequest(FrameBuffer *buffer)
{
Request *request = camera_->createRequest();
if (!request) {
- std::cerr << "Can't create request" << std::endl;
+ qWarning() << "Can't create request";
return;
}
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list