diff options
author | Yoann Lopes <yoann.lopes@theqtcompany.com> | 2016-02-11 04:34:57 +0100 |
---|---|---|
committer | Yoann Lopes <yoann.lopes@qt.io> | 2016-06-09 12:28:24 +0000 |
commit | f5de14107094080f15fad3beffb64ad95ff6c5e4 (patch) | |
tree | d85d067035493926f30054f0f934954593004ce3 /src/plugins/avfoundation/camera/avfmediarecordercontrol_ios.mm | |
parent | 2303d2fef8987f32b1615710ef8930f8d2854373 (diff) |
AVFoundation: implement QAudioEncoderSettings.
Change-Id: I24d3da1417142bc80bc6b6c1c8124c246afe03db
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
Diffstat (limited to 'src/plugins/avfoundation/camera/avfmediarecordercontrol_ios.mm')
-rw-r--r-- | src/plugins/avfoundation/camera/avfmediarecordercontrol_ios.mm | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/src/plugins/avfoundation/camera/avfmediarecordercontrol_ios.mm b/src/plugins/avfoundation/camera/avfmediarecordercontrol_ios.mm index 2052afb50..f2c16f675 100644 --- a/src/plugins/avfoundation/camera/avfmediarecordercontrol_ios.mm +++ b/src/plugins/avfoundation/camera/avfmediarecordercontrol_ios.mm @@ -38,6 +38,7 @@ #include "avfcameracontrol.h" #include "avfcameraservice.h" #include "avfcameradebug.h" +#include "avfaudioencodersettingscontrol.h" #include "avfvideoencodersettingscontrol.h" #include "avfmediacontainercontrol.h" #include "avfcamerautility.h" @@ -80,6 +81,7 @@ AVFMediaRecorderControlIOS::AVFMediaRecorderControlIOS(AVFCameraService *service , m_service(service) , m_state(QMediaRecorder::StoppedState) , m_lastStatus(QMediaRecorder::UnloadedStatus) + , m_audioSettings(nil) , m_videoSettings(nil) { Q_ASSERT(service); @@ -112,6 +114,8 @@ AVFMediaRecorderControlIOS::~AVFMediaRecorderControlIOS() { [m_writer abort]; + if (m_audioSettings) + [m_audioSettings release]; if (m_videoSettings) [m_videoSettings release]; } @@ -164,8 +168,13 @@ void AVFMediaRecorderControlIOS::applySettings() return; } - AVCaptureConnection *conn = [m_service->videoOutput()->videoDataOutput() connectionWithMediaType:AVMediaTypeVideo]; + // audio settings + m_audioSettings = m_service->audioEncoderSettingsControl()->applySettings(); + if (m_audioSettings) + [m_audioSettings retain]; + // video settings + AVCaptureConnection *conn = [m_service->videoOutput()->videoDataOutput() connectionWithMediaType:AVMediaTypeVideo]; m_videoSettings = m_service->videoEncoderSettingsControl()->applySettings(conn); if (m_videoSettings) [m_videoSettings retain]; @@ -173,9 +182,15 @@ void AVFMediaRecorderControlIOS::applySettings() void AVFMediaRecorderControlIOS::unapplySettings() { + m_service->audioEncoderSettingsControl()->unapplySettings(); + AVCaptureConnection *conn = [m_service->videoOutput()->videoDataOutput() connectionWithMediaType:AVMediaTypeVideo]; m_service->videoEncoderSettingsControl()->unapplySettings(conn); + if (m_audioSettings) { + [m_audioSettings release]; + m_audioSettings = nil; + } if (m_videoSettings) { [m_videoSettings release]; m_videoSettings = nil; @@ -247,7 +262,9 @@ void AVFMediaRecorderControlIOS::setState(QMediaRecorder::State state) applySettings(); - if ([m_writer setupWithFileURL:nsFileURL cameraService:m_service videoSettings:m_videoSettings]) { + if ([m_writer setupWithFileURL:nsFileURL cameraService:m_service + audioSettings:m_audioSettings + videoSettings:m_videoSettings]) { m_state = QMediaRecorder::RecordingState; m_lastStatus = QMediaRecorder::StartingStatus; |