mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-08-12 18:24:38 +02:00
Provide option to enable/disable webcam (disabled by default).
This commit is contained in:
parent
dbde66cbd5
commit
352f7ca3cf
3 changed files with 20 additions and 12 deletions
|
@ -1241,8 +1241,8 @@ void Application::initMenu() {
|
|||
(_gravityUse = optionsMenu->addAction("Use Gravity"))->setCheckable(true);
|
||||
_gravityUse->setChecked(true);
|
||||
_gravityUse->setShortcut(Qt::SHIFT | Qt::Key_G);
|
||||
|
||||
(_fullScreenMode = optionsMenu->addAction("Fullscreen", this, SLOT(setFullscreen(bool)), Qt::Key_F))->setCheckable(true);
|
||||
optionsMenu->addAction("Webcam", &_webcam, SLOT(setEnabled(bool)))->setCheckable(true);
|
||||
|
||||
QMenu* renderMenu = menuBar->addMenu("Render");
|
||||
(_renderVoxels = renderMenu->addAction("Voxels"))->setCheckable(true);
|
||||
|
@ -1416,8 +1416,6 @@ void Application::init() {
|
|||
QMetaObject::invokeMethod(_fullScreenMode, "trigger", Qt::QueuedConnection);
|
||||
}
|
||||
|
||||
_webcam.init();
|
||||
|
||||
gettimeofday(&_timerStart, NULL);
|
||||
gettimeofday(&_lastTimeIdle, NULL);
|
||||
|
||||
|
|
|
@ -20,22 +20,31 @@
|
|||
#include "Application.h"
|
||||
#include "Webcam.h"
|
||||
|
||||
Webcam::Webcam() : _frameTextureID(0), _startTimestamp(0), _frameCount(0) {
|
||||
Webcam::Webcam() : _enabled(false), _frameTextureID(0) {
|
||||
// the grabber simply runs as fast as possible
|
||||
_grabber = new FrameGrabber();
|
||||
_grabber->moveToThread(&_grabberThread);
|
||||
}
|
||||
|
||||
void Webcam::init() {
|
||||
// start the grabber thread
|
||||
_grabberThread.start();
|
||||
void Webcam::setEnabled(bool enabled) {
|
||||
if (_enabled == enabled) {
|
||||
return;
|
||||
}
|
||||
if (_enabled = enabled) {
|
||||
_grabberThread.start();
|
||||
_startTimestamp = 0;
|
||||
_frameCount = 0;
|
||||
|
||||
// let the grabber know we're ready for the first frame
|
||||
QMetaObject::invokeMethod(_grabber, "grabFrame");
|
||||
|
||||
// let the grabber know we're ready for the first frame
|
||||
QMetaObject::invokeMethod(_grabber, "grabFrame");
|
||||
} else {
|
||||
_grabberThread.quit();
|
||||
}
|
||||
}
|
||||
|
||||
void Webcam::renderPreview(int screenWidth, int screenHeight) {
|
||||
if (_frameTextureID != 0) {
|
||||
if (_enabled && _frameTextureID != 0) {
|
||||
glBindTexture(GL_TEXTURE_2D, _frameTextureID);
|
||||
glEnable(GL_TEXTURE_2D);
|
||||
glColor3f(1.0f, 1.0f, 1.0f);
|
||||
|
@ -125,7 +134,7 @@ void FrameGrabber::grabFrame() {
|
|||
cvSetCaptureProperty(_capture, CV_CAP_PROP_FRAME_HEIGHT, IDEAL_FRAME_HEIGHT);
|
||||
|
||||
#ifdef __APPLE__
|
||||
configureCamera(0x5ac, 0x8510, 0, 0.9, 0.5, 0.5, 0.5, 1, 0.5);
|
||||
configureCamera(0x5ac, 0x8510, true, 0.5, 0.5, 0.5, 0.5, false, 0.5);
|
||||
#endif
|
||||
}
|
||||
IplImage* image = cvQueryFrame(_capture);
|
||||
|
|
|
@ -28,11 +28,11 @@ public:
|
|||
Webcam();
|
||||
~Webcam();
|
||||
|
||||
void init();
|
||||
void renderPreview(int screenWidth, int screenHeight);
|
||||
|
||||
public slots:
|
||||
|
||||
void setEnabled(bool enabled);
|
||||
void setFrame(void* image);
|
||||
|
||||
private:
|
||||
|
@ -40,6 +40,7 @@ private:
|
|||
QThread _grabberThread;
|
||||
FrameGrabber* _grabber;
|
||||
|
||||
bool _enabled;
|
||||
int _frameWidth;
|
||||
int _frameHeight;
|
||||
GLuint _frameTextureID;
|
||||
|
|
Loading…
Reference in a new issue