diff options
Diffstat (limited to 'src/multimedia/platform/darwin/camera/avfmediaassetwriter.mm')
-rw-r--r-- | src/multimedia/platform/darwin/camera/avfmediaassetwriter.mm | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/src/multimedia/platform/darwin/camera/avfmediaassetwriter.mm b/src/multimedia/platform/darwin/camera/avfmediaassetwriter.mm index ed90dbd07..586e1a60e 100644 --- a/src/multimedia/platform/darwin/camera/avfmediaassetwriter.mm +++ b/src/multimedia/platform/darwin/camera/avfmediaassetwriter.mm @@ -62,6 +62,9 @@ bool qt_capture_session_isValid(AVFCameraService *service) if (!session->captureSession()) return false; + if (!session->videoInput() && !session->audioInput()) + return false; + return true; } @@ -171,7 +174,7 @@ using AVFAtomicInt64 = QAtomicInteger<qint64>; return false; } - if (session->videoOutput() && session->videoOutput()->videoDataOutput()) { + if (session->videoInput() && session->videoOutput() && session->videoOutput()->videoDataOutput()) { m_videoQueue.reset(dispatch_queue_create("video-output-queue", DISPATCH_QUEUE_SERIAL)); if (!m_videoQueue) { qDebugCamera() << Q_FUNC_INFO << "failed to create video queue"; @@ -197,10 +200,6 @@ using AVFAtomicInt64 = QAtomicInteger<qint64>; return false; } - bool audioCaptureOn = false; - if (m_audioQueue) - audioCaptureOn = session->audioOutput() != nil; - if (!m_videoQueue) m_writeFirstAudioBuffer = true; @@ -492,16 +491,12 @@ using AVFAtomicInt64 = QAtomicInteger<qint64>; if (m_videoQueue) { - Q_ASSERT(session->videoOutput() && session->videoOutput()->videoDataOutput()); + Q_ASSERT(session->videoCaptureDevice() && session->videoOutput() && session->videoOutput()->videoDataOutput()); m_cameraWriterInput.reset([[AVAssetWriterInput alloc] initWithMediaType:AVMediaTypeVideo outputSettings:m_videoSettings sourceFormatHint:session->videoCaptureDevice().activeFormat.formatDescription]); - if (!m_cameraWriterInput) { - qDebugCamera() << Q_FUNC_INFO << "failed to create camera writer input"; - return false; - } - if ([m_assetWriter canAddInput:m_cameraWriterInput]) { + if (m_cameraWriterInput && [m_assetWriter canAddInput:m_cameraWriterInput]) { [m_assetWriter addInput:m_cameraWriterInput]; } else { qDebugCamera() << Q_FUNC_INFO << "failed to add camera writer input"; |