diff options
author | Timur Pocheptsov <Timur.Pocheptsov@digia.com> | 2015-02-12 10:17:09 +0100 |
---|---|---|
committer | Yoann Lopes <yoann.lopes@theqtcompany.com> | 2015-03-02 12:44:51 +0000 |
commit | 33b27c3c15aaca611d5ed0164afa3cd2e9f891a7 (patch) | |
tree | 6d6cc8a7816035f72c286a57eb48ac791ca66f39 /src/plugins/avfoundation/camera/avfcamerasession.mm | |
parent | 985ee3261b3c82ddad87124657ee3fb61e311a4d (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.mm | 25 |
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(); } } |