summaryrefslogtreecommitdiffstats
path: root/src/plugins/avfoundation/camera/avfcamerasession.mm
diff options
context:
space:
mode:
authorTimur Pocheptsov <Timur.Pocheptsov@digia.com>2015-02-12 10:17:09 +0100
committerYoann Lopes <yoann.lopes@theqtcompany.com>2015-03-02 12:44:51 +0000
commit33b27c3c15aaca611d5ed0164afa3cd2e9f891a7 (patch)
tree6d6cc8a7816035f72c286a57eb48ac791ca66f39 /src/plugins/avfoundation/camera/avfcamerasession.mm
parent985ee3261b3c82ddad87124657ee3fb61e311a4d (diff)
Image encoder control - version for OS X/iOS
QImageEncoderControl - implementation for AVFoundation plugin (OS X/iOS, at the moment iOS >= 7.0). Change-Id: Ibc2c3ae48252dd4698e263f5abca5c328482d5e7 Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
Diffstat (limited to 'src/plugins/avfoundation/camera/avfcamerasession.mm')
-rw-r--r--src/plugins/avfoundation/camera/avfcamerasession.mm25
1 files changed, 21 insertions, 4 deletions
diff --git a/src/plugins/avfoundation/camera/avfcamerasession.mm b/src/plugins/avfoundation/camera/avfcamerasession.mm
index 5570aa83b..98fbb9865 100644
--- a/src/plugins/avfoundation/camera/avfcamerasession.mm
+++ b/src/plugins/avfoundation/camera/avfcamerasession.mm
@@ -40,6 +40,7 @@
#include "avfaudioinputselectorcontrol.h"
#include "avfmediavideoprobecontrol.h"
#include "avfcameraviewfindersettingscontrol.h"
+#include "avfimageencodercontrol.h"
#include <CoreFoundation/CoreFoundation.h>
#include <Foundation/Foundation.h>
@@ -276,6 +277,7 @@ void AVFCameraSession::setState(QCamera::State newState)
Q_EMIT readyToConfigureConnections();
[m_captureSession commitConfiguration];
[m_captureSession startRunning];
+ applyImageEncoderSettings();
applyViewfinderSettings();
}
@@ -366,12 +368,27 @@ void AVFCameraSession::attachInputDevices()
}
}
+void AVFCameraSession::applyImageEncoderSettings()
+{
+ if (AVFImageEncoderControl *control = m_service->imageEncoderControl())
+ control->applySettings();
+}
+
void AVFCameraSession::applyViewfinderSettings()
{
- if (AVFCameraViewfinderSettingsControl2 *control = m_service->viewfinderSettingsControl2()) {
- QCameraViewfinderSettings settings(control->requestedSettings());
- // TODO: Adjust the resolution (from image encoder control), updating 'settings'.
- control->setViewfinderSettings(settings);
+ if (AVFCameraViewfinderSettingsControl2 *vfControl = m_service->viewfinderSettingsControl2()) {
+ QCameraViewfinderSettings vfSettings(vfControl->requestedSettings());
+ if (AVFImageEncoderControl *imControl = m_service->imageEncoderControl()) {
+ const QSize imageResolution(imControl->imageSettings().resolution());
+ if (!imageResolution.isNull() && imageResolution.isValid()) {
+ vfSettings.setResolution(imageResolution);
+ vfControl->setViewfinderSettings(vfSettings);
+ return;
+ }
+ }
+
+ if (!vfSettings.isNull())
+ vfControl->applySettings();
}
}