summaryrefslogtreecommitdiffstats
path: root/src/multimedia/platform/darwin
diff options
context:
space:
mode:
Diffstat (limited to 'src/multimedia/platform/darwin')
-rw-r--r--src/multimedia/platform/darwin/camera/avfcameracontrol.mm31
-rw-r--r--src/multimedia/platform/darwin/camera/avfcameracontrol_p.h5
-rw-r--r--src/multimedia/platform/darwin/camera/avfcamerasession.mm16
-rw-r--r--src/multimedia/platform/darwin/camera/avfcamerasession_p.h2
-rw-r--r--src/multimedia/platform/darwin/camera/avfimagecapturecontrol.mm15
-rw-r--r--src/multimedia/platform/darwin/camera/avfmediarecordercontrol.mm15
-rw-r--r--src/multimedia/platform/darwin/camera/avfmediarecordercontrol_ios.mm23
-rw-r--r--src/multimedia/platform/darwin/camera/avfmediarecordercontrol_ios_p.h1
-rw-r--r--src/multimedia/platform/darwin/camera/avfstoragelocation.mm6
-rw-r--r--src/multimedia/platform/darwin/camera/avfstoragelocation_p.h9
10 files changed, 32 insertions, 91 deletions
diff --git a/src/multimedia/platform/darwin/camera/avfcameracontrol.mm b/src/multimedia/platform/darwin/camera/avfcameracontrol.mm
index b4cc9116a..7059588da 100644
--- a/src/multimedia/platform/darwin/camera/avfcameracontrol.mm
+++ b/src/multimedia/platform/darwin/camera/avfcameracontrol.mm
@@ -55,11 +55,9 @@ AVFCameraControl::AVFCameraControl(AVFCameraService *service, QObject *parent)
, m_service(service)
, m_state(QCamera::UnloadedState)
, m_lastStatus(QCamera::UnloadedStatus)
- , m_captureMode(QCamera::CaptureStillImage)
{
Q_UNUSED(service);
connect(m_session, SIGNAL(stateChanged(QCamera::State)), SLOT(updateStatus()));
- connect(this, &AVFCameraControl::captureModeChanged, m_session, &AVFCameraSession::onCaptureModeChanged);
}
AVFCameraControl::~AVFCameraControl()
@@ -109,30 +107,6 @@ void AVFCameraControl::updateStatus()
}
}
-QCamera::CaptureModes AVFCameraControl::captureMode() const
-{
- return m_captureMode;
-}
-
-void AVFCameraControl::setCaptureMode(QCamera::CaptureModes mode)
-{
- if (m_captureMode == mode)
- return;
-
- m_captureMode = mode;
- Q_EMIT captureModeChanged(mode);
-}
-
-bool AVFCameraControl::isCaptureModeSupported(QCamera::CaptureModes /*mode*/) const
-{
- return true;
-}
-
-void AVFCameraControl::setVideoSurface(QAbstractVideoSurface *surface)
-{
- m_session->setVideoSurface(surface);
-}
-
bool AVFCameraControl::canChangeProperty(QCameraControl::PropertyChangeType changeType, QCamera::Status status) const
{
Q_UNUSED(changeType);
@@ -209,6 +183,11 @@ bool AVFCameraControl::CVPixelFormatFromQtFormat(QVideoFrame::PixelFormat qtForm
return true;
}
+void AVFCameraControl::setVideoSurface(QAbstractVideoSurface *surface)
+{
+ m_session->setVideoSurface(surface);
+}
+
AVCaptureConnection *AVFCameraControl::videoConnection() const
{
if (!m_session->videoOutput() || !m_session->videoOutput()->videoDataOutput())
diff --git a/src/multimedia/platform/darwin/camera/avfcameracontrol_p.h b/src/multimedia/platform/darwin/camera/avfcameracontrol_p.h
index 423afa724..5f9aff0d6 100644
--- a/src/multimedia/platform/darwin/camera/avfcameracontrol_p.h
+++ b/src/multimedia/platform/darwin/camera/avfcameracontrol_p.h
@@ -76,10 +76,6 @@ public:
void setCamera(const QCameraInfo &camera) override;
- QCamera::CaptureModes captureMode() const override;
- void setCaptureMode(QCamera::CaptureModes) override;
- bool isCaptureModeSupported(QCamera::CaptureModes mode) const override;
-
bool canChangeProperty(PropertyChangeType changeType, QCamera::Status status) const override;
QCameraFocusControl *focusControl() override;
@@ -104,7 +100,6 @@ private:
QCamera::State m_state;
QCamera::Status m_lastStatus;
- QCamera::CaptureModes m_captureMode;
};
QT_END_NAMESPACE
diff --git a/src/multimedia/platform/darwin/camera/avfcamerasession.mm b/src/multimedia/platform/darwin/camera/avfcamerasession.mm
index 1d76e672e..f6772c5d1 100644
--- a/src/multimedia/platform/darwin/camera/avfcamerasession.mm
+++ b/src/multimedia/platform/darwin/camera/avfcamerasession.mm
@@ -295,14 +295,14 @@ void AVFCameraSession::processSessionStopped()
}
}
-void AVFCameraSession::onCaptureModeChanged(QCamera::CaptureModes mode)
-{
- Q_UNUSED(mode);
-
- const QCamera::State s = state();
- if (s == QCamera::LoadedState || s == QCamera::ActiveState)
- applyImageEncoderSettings();
-}
+//void AVFCameraSession::onCaptureModeChanged(QCamera::CaptureModes mode)
+//{
+// Q_UNUSED(mode);
+
+// const QCamera::State s = state();
+// if (s == QCamera::LoadedState || s == QCamera::ActiveState)
+// applyImageEncoderSettings();
+//}
AVCaptureDevice *AVFCameraSession::createCaptureDevice()
{
diff --git a/src/multimedia/platform/darwin/camera/avfcamerasession_p.h b/src/multimedia/platform/darwin/camera/avfcamerasession_p.h
index 0ca3c01f1..b31c04bab 100644
--- a/src/multimedia/platform/darwin/camera/avfcamerasession_p.h
+++ b/src/multimedia/platform/darwin/camera/avfcamerasession_p.h
@@ -100,8 +100,6 @@ public Q_SLOTS:
void processSessionStarted();
void processSessionStopped();
- void onCaptureModeChanged(QCamera::CaptureModes mode);
-
Q_SIGNALS:
void readyToConfigureConnections();
void stateChanged(QCamera::State newState);
diff --git a/src/multimedia/platform/darwin/camera/avfimagecapturecontrol.mm b/src/multimedia/platform/darwin/camera/avfimagecapturecontrol.mm
index 3ff4a4eb9..27394a2f1 100644
--- a/src/multimedia/platform/darwin/camera/avfimagecapturecontrol.mm
+++ b/src/multimedia/platform/darwin/camera/avfimagecapturecontrol.mm
@@ -69,11 +69,9 @@ AVFImageCaptureControl::AVFImageCaptureControl(AVFCameraService *service, QObjec
[m_stillImageOutput setOutputSettings:outputSettings];
[outputSettings release];
- connect(m_cameraControl, SIGNAL(captureModeChanged(QCamera::CaptureModes)), SLOT(updateReadyStatus()));
connect(m_cameraControl, SIGNAL(statusChanged(QCamera::Status)), SLOT(updateReadyStatus()));
connect(m_session, SIGNAL(readyToConfigureConnections()), SLOT(updateCaptureConnection()));
- connect(m_cameraControl, SIGNAL(captureModeChanged(QCamera::CaptureModes)), SLOT(updateCaptureConnection()));
connect(m_session, &AVFCameraSession::newViewfinderFrame,
this, &AVFImageCaptureControl::onNewViewfinderFrame,
@@ -86,9 +84,7 @@ AVFImageCaptureControl::~AVFImageCaptureControl()
bool AVFImageCaptureControl::isReadyForCapture() const
{
- return m_videoConnection &&
- m_cameraControl->captureMode().testFlag(QCamera::CaptureStillImage) &&
- m_cameraControl->status() == QCamera::ActiveStatus;
+ return m_videoConnection && m_cameraControl->status() == QCamera::ActiveStatus;
}
void AVFImageCaptureControl::updateReadyStatus()
@@ -116,7 +112,7 @@ int AVFImageCaptureControl::capture(const QString &fileName)
QString actualFileName;
if (destination & QCameraImageCapture::CaptureToFile) {
actualFileName = m_storageLocation.generateFileName(fileName,
- QCamera::CaptureStillImage,
+ AVFStorageLocation::Image,
QLatin1String("img_"),
QLatin1String("jpg"));
@@ -256,8 +252,7 @@ void AVFImageCaptureControl::setCaptureDestination(QCameraImageCapture::CaptureD
void AVFImageCaptureControl::updateCaptureConnection()
{
- if (m_session->videoCaptureDevice()
- && m_cameraControl->captureMode().testFlag(QCamera::CaptureStillImage)) {
+ if (m_session->videoCaptureDevice()) {
qDebugCamera() << Q_FUNC_INFO;
AVCaptureSession *captureSession = m_session->captureSession();
@@ -327,10 +322,8 @@ bool AVFImageCaptureControl::applySettings()
AVFCameraSession *session = m_service->session();
if (!session || (session->state() != QCamera::ActiveState
- && session->state() != QCamera::LoadedState)
- || !m_service->cameraControl()->captureMode().testFlag(QCamera::CaptureStillImage)) {
+ && session->state() != QCamera::LoadedState))
return false;
- }
if (!m_service->imageCaptureControl()
|| !m_service->imageCaptureControl()->stillImageOutput()) {
diff --git a/src/multimedia/platform/darwin/camera/avfmediarecordercontrol.mm b/src/multimedia/platform/darwin/camera/avfmediarecordercontrol.mm
index e39161cfd..55938780d 100644
--- a/src/multimedia/platform/darwin/camera/avfmediarecordercontrol.mm
+++ b/src/multimedia/platform/darwin/camera/avfmediarecordercontrol.mm
@@ -147,7 +147,6 @@ AVFMediaRecorderControl::AVFMediaRecorderControl(AVFCameraService *service, QObj
connect(m_cameraControl, SIGNAL(stateChanged(QCamera::State)), SLOT(updateStatus()));
connect(m_cameraControl, SIGNAL(statusChanged(QCamera::Status)), SLOT(updateStatus()));
- connect(m_cameraControl, SIGNAL(captureModeChanged(QCamera::CaptureModes)), SLOT(setupSessionForCapture()));
connect(m_session, SIGNAL(readyToConfigureConnections()), SLOT(setupSessionForCapture()));
connect(m_session, SIGNAL(stateChanged(QCamera::State)), SLOT(setupSessionForCapture()));
}
@@ -466,10 +465,8 @@ NSDictionary *avfVideoSettings(QMediaEncoderSettings &encoderSettings, AVCapture
void AVFMediaRecorderControl::applySettings()
{
if (m_state != QMediaRecorder::StoppedState
- || (m_session->state() != QCamera::ActiveState && m_session->state() != QCamera::LoadedState)
- || !m_service->cameraControl()->captureMode().testFlag(QCamera::CaptureVideo)) {
+ || (m_session->state() != QCamera::ActiveState && m_session->state() != QCamera::LoadedState))
return;
- }
QMediaEncoderSettings resolved = m_settings;
resolved.resolveFormat();
@@ -550,7 +547,7 @@ void AVFMediaRecorderControl::setState(QMediaRecorder::State state)
QUrl actualLocation = QUrl::fromLocalFile(
m_storageLocation.generateFileName(outputLocationPath,
- QCamera::CaptureVideo,
+ AVFStorageLocation::Video,
QLatin1String("clip_"),
extension));
@@ -644,9 +641,7 @@ void AVFMediaRecorderControl::setupSessionForCapture()
// request on iOS, but it shoudn't do so until we actually try to record.
AVCaptureSession *captureSession = m_session->captureSession();
- if (!m_connected
- && m_cameraControl->captureMode().testFlag(QCamera::CaptureVideo)
- && m_session->state() != QCamera::UnloadedState) {
+ if (!m_connected && m_session->state() != QCamera::UnloadedState) {
// Lock the video capture device to make sure the active format is not reset
const AVFConfigurationLock lock(m_session->videoCaptureDevice());
@@ -678,9 +673,7 @@ void AVFMediaRecorderControl::setupSessionForCapture()
Q_EMIT error(QMediaRecorder::ResourceError, tr("Could not connect the video recorder"));
qWarning() << "Could not connect the video recorder";
}
- } else if (m_connected
- && (!m_cameraControl->captureMode().testFlag(QCamera::CaptureVideo)
- || m_session->state() == QCamera::UnloadedState)) {
+ } else if (m_connected || m_session->state() == QCamera::UnloadedState) {
// Lock the video capture device to make sure the active format is not reset
const AVFConfigurationLock lock(m_session->videoCaptureDevice());
diff --git a/src/multimedia/platform/darwin/camera/avfmediarecordercontrol_ios.mm b/src/multimedia/platform/darwin/camera/avfmediarecordercontrol_ios.mm
index 22989953f..c33b66ad0 100644
--- a/src/multimedia/platform/darwin/camera/avfmediarecordercontrol_ios.mm
+++ b/src/multimedia/platform/darwin/camera/avfmediarecordercontrol_ios.mm
@@ -231,7 +231,7 @@ void AVFMediaRecorderControlIOS::setState(QMediaRecorder::State state)
const QString path(m_outputLocation.scheme() == QLatin1String("file") ?
m_outputLocation.path() : m_outputLocation.toString());
- const QUrl fileURL(QUrl::fromLocalFile(m_storageLocation.generateFileName(path, QCamera::CaptureVideo,
+ const QUrl fileURL(QUrl::fromLocalFile(m_storageLocation.generateFileName(path, AVFStorageLocation::Video,
QLatin1String("clip_"),
m_service->mediaContainerControl()->containerFormat())));
@@ -356,27 +356,6 @@ void AVFMediaRecorderControlIOS::assetWriterFinished()
Q_EMIT stateChanged(m_state);
}
-void AVFMediaRecorderControlIOS::captureModeChanged(QCamera::CaptureModes newMode)
-{
- AVFCameraControl *cameraControl = m_service->cameraControl();
- Q_ASSERT(cameraControl);
-
- const QMediaRecorder::Status lastStatus = m_lastStatus;
-
- if (newMode & QCamera::CaptureVideo) {
- if (cameraControl->status() == QCamera::ActiveStatus)
- m_lastStatus = QMediaRecorder::LoadedStatus;
- } else {
- if (m_lastStatus == QMediaRecorder::RecordingStatus)
- return stopWriter();
- else
- m_lastStatus = QMediaRecorder::UnloadedStatus;
- }
-
- if (m_lastStatus != lastStatus)
- Q_EMIT statusChanged(m_lastStatus);
-}
-
void AVFMediaRecorderControlIOS::cameraStatusChanged(QCamera::Status newStatus)
{
AVFCameraControl *cameraControl = m_service->cameraControl();
diff --git a/src/multimedia/platform/darwin/camera/avfmediarecordercontrol_ios_p.h b/src/multimedia/platform/darwin/camera/avfmediarecordercontrol_ios_p.h
index 178c75cad..f550e59c2 100644
--- a/src/multimedia/platform/darwin/camera/avfmediarecordercontrol_ios_p.h
+++ b/src/multimedia/platform/darwin/camera/avfmediarecordercontrol_ios_p.h
@@ -101,7 +101,6 @@ private:
Q_INVOKABLE void assetWriterFinished();
private Q_SLOTS:
- void captureModeChanged(QCamera::CaptureModes);
void cameraStatusChanged(QCamera::Status newStatus);
private:
diff --git a/src/multimedia/platform/darwin/camera/avfstoragelocation.mm b/src/multimedia/platform/darwin/camera/avfstoragelocation.mm
index 46671e938..f2c223c82 100644
--- a/src/multimedia/platform/darwin/camera/avfstoragelocation.mm
+++ b/src/multimedia/platform/darwin/camera/avfstoragelocation.mm
@@ -59,7 +59,7 @@ AVFStorageLocation::~AVFStorageLocation()
* or specify the full actual path.
*/
QString AVFStorageLocation::generateFileName(const QString &requestedName,
- QCamera::CaptureMode mode,
+ Mode mode,
const QString &prefix,
const QString &ext) const
{
@@ -72,11 +72,11 @@ QString AVFStorageLocation::generateFileName(const QString &requestedName,
return requestedName;
}
-QDir AVFStorageLocation::defaultDir(QCamera::CaptureMode mode) const
+QDir AVFStorageLocation::defaultDir(Mode mode) const
{
QStringList dirCandidates;
- if (mode == QCamera::CaptureVideo) {
+ if (mode == Video) {
dirCandidates << QStandardPaths::writableLocation(QStandardPaths::MoviesLocation);
} else {
dirCandidates << QStandardPaths::writableLocation(QStandardPaths::PicturesLocation);
diff --git a/src/multimedia/platform/darwin/camera/avfstoragelocation_p.h b/src/multimedia/platform/darwin/camera/avfstoragelocation_p.h
index 8794f0fae..25221f68c 100644
--- a/src/multimedia/platform/darwin/camera/avfstoragelocation_p.h
+++ b/src/multimedia/platform/darwin/camera/avfstoragelocation_p.h
@@ -64,13 +64,18 @@ public:
AVFStorageLocation();
~AVFStorageLocation();
+ enum Mode {
+ Image,
+ Video
+ };
+
QString generateFileName(const QString &requestedName,
- QCamera::CaptureMode mode,
+ Mode mode,
const QString &prefix,
const QString &ext) const;
- QDir defaultDir(QCamera::CaptureMode mode) const;
+ QDir defaultDir(Mode mode) const;
QString generateFileName(const QString &prefix, const QDir &dir, const QString &ext) const;
private: