mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-21 15:53:54 +03:00
qcam: Add additional command line option to select the renderer type
Add new option "--renderer=qt|gles" to select the renderer type, "--renderer=gles" to accelerate format conversion and rendering "--renderer=qt" is the original Qt rendering. Signed-off-by: Show Liu <show.liu@linaro.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
parent
9db6ce0ba4
commit
219cbfe76b
3 changed files with 33 additions and 5 deletions
|
@ -33,6 +33,9 @@ OptionsParser::Options parseOptions(int argc, char *argv[])
|
||||||
ArgumentRequired, "camera");
|
ArgumentRequired, "camera");
|
||||||
parser.addOption(OptHelp, OptionNone, "Display this help message",
|
parser.addOption(OptHelp, OptionNone, "Display this help message",
|
||||||
"help");
|
"help");
|
||||||
|
parser.addOption(OptRenderer, OptionString,
|
||||||
|
"Choose the renderer type {qt,gles} (default: qt)",
|
||||||
|
"renderer", ArgumentRequired, "renderer");
|
||||||
parser.addOption(OptStream, &streamKeyValue,
|
parser.addOption(OptStream, &streamKeyValue,
|
||||||
"Set configuration of a camera stream", "stream", true);
|
"Set configuration of a camera stream", "stream", true);
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,9 @@
|
||||||
#include <libcamera/version.h>
|
#include <libcamera/version.h>
|
||||||
|
|
||||||
#include "dng_writer.h"
|
#include "dng_writer.h"
|
||||||
|
#ifndef QT_NO_OPENGL
|
||||||
|
#include "viewfinder_gl.h"
|
||||||
|
#endif
|
||||||
#include "viewfinder_qt.h"
|
#include "viewfinder_qt.h"
|
||||||
|
|
||||||
using namespace libcamera;
|
using namespace libcamera;
|
||||||
|
@ -106,11 +109,32 @@ MainWindow::MainWindow(CameraManager *cm, const OptionsParser::Options &options)
|
||||||
setWindowTitle(title_);
|
setWindowTitle(title_);
|
||||||
connect(&titleTimer_, SIGNAL(timeout()), this, SLOT(updateTitle()));
|
connect(&titleTimer_, SIGNAL(timeout()), this, SLOT(updateTitle()));
|
||||||
|
|
||||||
ViewFinderQt *viewfinder = new ViewFinderQt(this);
|
/* Renderer type Qt or GLES, select Qt by default. */
|
||||||
connect(viewfinder, &ViewFinderQt::renderComplete,
|
std::string renderType = "qt";
|
||||||
this, &MainWindow::queueRequest);
|
if (options_.isSet(OptRenderer))
|
||||||
viewfinder_ = viewfinder;
|
renderType = options_[OptRenderer].toString();
|
||||||
setCentralWidget(viewfinder);
|
|
||||||
|
if (renderType == "qt") {
|
||||||
|
ViewFinderQt *viewfinder = new ViewFinderQt(this);
|
||||||
|
connect(viewfinder, &ViewFinderQt::renderComplete,
|
||||||
|
this, &MainWindow::queueRequest);
|
||||||
|
viewfinder_ = viewfinder;
|
||||||
|
setCentralWidget(viewfinder);
|
||||||
|
#ifndef QT_NO_OPENGL
|
||||||
|
} else if (renderType == "gles") {
|
||||||
|
ViewFinderGL *viewfinder = new ViewFinderGL(this);
|
||||||
|
connect(viewfinder, &ViewFinderGL::renderComplete,
|
||||||
|
this, &MainWindow::queueRequest);
|
||||||
|
viewfinder_ = viewfinder;
|
||||||
|
setCentralWidget(viewfinder);
|
||||||
|
#endif
|
||||||
|
} else {
|
||||||
|
qWarning() << "Invalid render type"
|
||||||
|
<< QString::fromStdString(renderType);
|
||||||
|
quit();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
adjustSize();
|
adjustSize();
|
||||||
|
|
||||||
/* Hotplug/unplug support */
|
/* Hotplug/unplug support */
|
||||||
|
|
|
@ -37,6 +37,7 @@ class HotplugEvent;
|
||||||
enum {
|
enum {
|
||||||
OptCamera = 'c',
|
OptCamera = 'c',
|
||||||
OptHelp = 'h',
|
OptHelp = 'h',
|
||||||
|
OptRenderer = 'r',
|
||||||
OptStream = 's',
|
OptStream = 's',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue