mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-21 11:25:08 +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");
|
||||
parser.addOption(OptHelp, OptionNone, "Display this help message",
|
||||
"help");
|
||||
parser.addOption(OptRenderer, OptionString,
|
||||
"Choose the renderer type {qt,gles} (default: qt)",
|
||||
"renderer", ArgumentRequired, "renderer");
|
||||
parser.addOption(OptStream, &streamKeyValue,
|
||||
"Set configuration of a camera stream", "stream", true);
|
||||
|
||||
|
|
|
@ -28,6 +28,9 @@
|
|||
#include <libcamera/version.h>
|
||||
|
||||
#include "dng_writer.h"
|
||||
#ifndef QT_NO_OPENGL
|
||||
#include "viewfinder_gl.h"
|
||||
#endif
|
||||
#include "viewfinder_qt.h"
|
||||
|
||||
using namespace libcamera;
|
||||
|
@ -106,11 +109,32 @@ MainWindow::MainWindow(CameraManager *cm, const OptionsParser::Options &options)
|
|||
setWindowTitle(title_);
|
||||
connect(&titleTimer_, SIGNAL(timeout()), this, SLOT(updateTitle()));
|
||||
|
||||
ViewFinderQt *viewfinder = new ViewFinderQt(this);
|
||||
connect(viewfinder, &ViewFinderQt::renderComplete,
|
||||
this, &MainWindow::queueRequest);
|
||||
viewfinder_ = viewfinder;
|
||||
setCentralWidget(viewfinder);
|
||||
/* Renderer type Qt or GLES, select Qt by default. */
|
||||
std::string renderType = "qt";
|
||||
if (options_.isSet(OptRenderer))
|
||||
renderType = options_[OptRenderer].toString();
|
||||
|
||||
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();
|
||||
|
||||
/* Hotplug/unplug support */
|
||||
|
|
|
@ -37,6 +37,7 @@ class HotplugEvent;
|
|||
enum {
|
||||
OptCamera = 'c',
|
||||
OptHelp = 'h',
|
||||
OptRenderer = 'r',
|
||||
OptStream = 's',
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue