diff options
Diffstat (limited to 'src/multimedia/platform/darwin')
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: |