void CameraControl::setupCamera(QCamera * camera) { this->camera = camera; QCameraFocus * focus = camera->focus(); focus->setFocusMode(QCameraFocus::ContinuousFocus); focus->setFocusPointMode(QCameraFocus::FocusPointAuto); camera->imageProcessing()->setWhiteBalanceMode(QCameraImageProcessing::WhiteBalanceAuto); camera->setCaptureMode(QCamera::CaptureViewfinder); QCameraExposure * exposure = camera->exposure(); exposure->setExposureMode(QCameraExposure::ExposureAuto); exposure->setExposureCompensation(0); exposure->setMeteringMode(QCameraExposure::MeteringSpot); imageCapture = new QCameraImageCapture(camera, this); connect(imageCapture, SIGNAL(imageSaved(int, QString)), this, SLOT(onSavedImageCaptured(int, QString))); //camera->load(); //camera->start(); }
void tst_QCameraBackend::testExposureMode() { #if !defined(Q_WS_MAEMO_6) QSKIP("Capture exposure parameters are supported only on mobile platforms"); #endif QCamera camera; QCameraExposure *exposure = camera.exposure(); #ifdef Q_WS_MAEMO_6 QEXPECT_FAIL("", "Camerabin reports Manual exposure instead of Auto", Continue); #endif QCOMPARE(exposure->exposureMode(), QCameraExposure::ExposureAuto); // Night exposure->setExposureMode(QCameraExposure::ExposureNight); QCOMPARE(exposure->exposureMode(), QCameraExposure::ExposureNight); camera.start(); QTRY_COMPARE(camera.status(), QCamera::ActiveStatus); QCOMPARE(exposure->exposureMode(), QCameraExposure::ExposureNight); camera.unload(); QTRY_COMPARE(camera.status(), QCamera::UnloadedStatus); #ifdef Q_WS_MAEMO_6 //resource policy doesn't work correctly when resource is released and immediately requested again. QTest::qWait(250); #endif // Auto exposure->setExposureMode(QCameraExposure::ExposureAuto); QCOMPARE(exposure->exposureMode(), QCameraExposure::ExposureAuto); camera.start(); QTRY_COMPARE(camera.status(), QCamera::ActiveStatus); QCOMPARE(exposure->exposureMode(), QCameraExposure::ExposureAuto); }
void tst_QCameraBackend::testExposureCompensation() { #if !defined(Q_WS_MAEMO_6) QSKIP("Capture exposure parameters are supported only on mobile platforms"); #endif QCamera camera; QCameraExposure *exposure = camera.exposure(); QSignalSpy exposureCompensationSignal(exposure, SIGNAL(exposureCompensationChanged(qreal))); //it should be possible to set exposure parameters in Unloaded state QCOMPARE(exposure->exposureCompensation()+1.0, 1.0); exposure->setExposureCompensation(1.0); QCOMPARE(exposure->exposureCompensation(), 1.0); QTRY_COMPARE(exposureCompensationSignal.count(), 1); QCOMPARE(exposureCompensationSignal.last().first().toReal(), 1.0); //exposureCompensationChanged should not be emitted when value is not changed exposure->setExposureCompensation(1.0); QTest::qWait(50); QCOMPARE(exposureCompensationSignal.count(), 1); //exposure compensation should be preserved during load/start camera.load(); QTRY_COMPARE(camera.status(), QCamera::LoadedStatus); QCOMPARE(exposure->exposureCompensation(), 1.0); exposureCompensationSignal.clear(); exposure->setExposureCompensation(-1.0); QCOMPARE(exposure->exposureCompensation(), -1.0); QTRY_COMPARE(exposureCompensationSignal.count(), 1); QCOMPARE(exposureCompensationSignal.last().first().toReal(), -1.0); camera.start(); QTRY_COMPARE(camera.status(), QCamera::ActiveStatus); QCOMPARE(exposure->exposureCompensation(), -1.0); exposureCompensationSignal.clear(); exposure->setExposureCompensation(1.0); QCOMPARE(exposure->exposureCompensation(), 1.0); QTRY_COMPARE(exposureCompensationSignal.count(), 1); QCOMPARE(exposureCompensationSignal.last().first().toReal(), 1.0); }