From b64bdf32ce10b039e8d7b1be18d001e89f315615 Mon Sep 17 00:00:00 2001 From: Timur Pocheptsov Date: Fri, 1 Nov 2019 14:11:41 +0100 Subject: Qt Mumtimedia - fix build for iOS Since RestrictedBool conversion operator was introduced, objective-C method calls require explicit .data() on our smart pointers. Fixes: QTBUG-79686 Change-Id: Ie32ebf0442cd56a01466aa58b89651d7c293de6d Reviewed-by: VaL Doroshchuk --- src/plugins/avfoundation/camera/avfmediaassetwriter.mm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/plugins/avfoundation') diff --git a/src/plugins/avfoundation/camera/avfmediaassetwriter.mm b/src/plugins/avfoundation/camera/avfmediaassetwriter.mm index 318d66117..9030adb2c 100644 --- a/src/plugins/avfoundation/camera/avfmediaassetwriter.mm +++ b/src/plugins/avfoundation/camera/avfmediaassetwriter.mm @@ -413,7 +413,7 @@ enum WriterState m_audioOutput.reset([[AVCaptureAudioDataOutput alloc] init]); - if (m_audioOutput && [captureSession canAddOutput:m_audioOutput]) { + if (m_audioOutput.data() && [captureSession canAddOutput:m_audioOutput]) { [captureSession addOutput:m_audioOutput]; } else { qDebugCamera() << Q_FUNC_INFO << "failed to add audio output"; @@ -431,7 +431,7 @@ enum WriterState { Q_ASSERT(m_service && m_service->videoOutput() && m_service->videoOutput()->videoDataOutput()); - Q_ASSERT(m_assetWriter); + Q_ASSERT(m_assetWriter.data()); m_cameraWriterInput.reset([[AVAssetWriterInput alloc] initWithMediaType:AVMediaTypeVideo outputSettings:m_videoSettings @@ -451,7 +451,7 @@ enum WriterState m_cameraWriterInput.data().expectsMediaDataInRealTime = YES; - if (m_audioOutput) { + if (m_audioOutput.data()) { CMFormatDescriptionRef sourceFormat = m_audioCaptureDevice ? m_audioCaptureDevice.activeFormat.formatDescription : 0; m_audioWriterInput.reset([[AVAssetWriterInput alloc] initWithMediaType:AVMediaTypeAudio outputSettings:m_audioSettings @@ -479,7 +479,7 @@ enum WriterState [m_service->videoOutput()->videoDataOutput() setSampleBufferDelegate:self queue:m_videoQueue]; - if (m_audioOutput) { + if (m_audioOutput.data()) { Q_ASSERT(m_audioQueue); [m_audioOutput setSampleBufferDelegate:self queue:m_audioQueue]; } -- cgit v1.2.3 From f422fbde120f791b29d01cf76079599c68ffa868 Mon Sep 17 00:00:00 2001 From: Timur Pocheptsov Date: Tue, 5 Nov 2019 09:34:48 +0100 Subject: AVFMediaAsserWriter: remove deprecated declration Interface in headers should not contain i-var declarations, these days it must be in implementation part. Also, replace quite suspicious 'load' with 'loadAquire' to pair 'storeRelease'. Since I have QT_USE_NAMESPACE in *.mm file, no need in ugly QT_PREPEND_NAMESPACE macro anymore. Change-Id: Ia19e3c5b68687030c97e8e8e982ae89627e909f9 Reviewed-by: VaL Doroshchuk --- .../avfoundation/camera/avfmediaassetwriter.h | 9 +----- .../avfoundation/camera/avfmediaassetwriter.mm | 33 ++++++++++++++-------- .../camera/avfmediarecordercontrol_ios.mm | 2 +- 3 files changed, 24 insertions(+), 20 deletions(-) (limited to 'src/plugins/avfoundation') diff --git a/src/plugins/avfoundation/camera/avfmediaassetwriter.h b/src/plugins/avfoundation/camera/avfmediaassetwriter.h index 9d61d5089..f063dab4b 100644 --- a/src/plugins/avfoundation/camera/avfmediaassetwriter.h +++ b/src/plugins/avfoundation/camera/avfmediaassetwriter.h @@ -43,7 +43,6 @@ #include "avfcamerautility.h" #include -#include #include @@ -52,17 +51,10 @@ QT_BEGIN_NAMESPACE class AVFMediaRecorderControlIOS; class AVFCameraService; -typedef QAtomicInteger AVFAtomicInt64; - QT_END_NAMESPACE @interface QT_MANGLE_NAMESPACE(AVFMediaAssetWriter) : NSObject -{ -@public - QT_PREPEND_NAMESPACE(AVFAtomicInt64) m_durationInMs; -} - - (id)initWithDelegate:(QT_PREPEND_NAMESPACE(AVFMediaRecorderControlIOS) *)delegate; - (bool)setupWithFileURL:(NSURL *)fileURL @@ -76,6 +68,7 @@ QT_END_NAMESPACE - (void)stop; // This to be called from the recorder control's dtor: - (void)abort; +- (qint64)durationInMs; @end diff --git a/src/plugins/avfoundation/camera/avfmediaassetwriter.mm b/src/plugins/avfoundation/camera/avfmediaassetwriter.mm index 9030adb2c..2d40b9087 100644 --- a/src/plugins/avfoundation/camera/avfmediaassetwriter.mm +++ b/src/plugins/avfoundation/camera/avfmediaassetwriter.mm @@ -47,6 +47,7 @@ #include "avfmediacontainercontrol.h" #include +#include QT_USE_NAMESPACE @@ -79,6 +80,8 @@ enum WriterState WriterStateAborted }; +using AVFAtomicInt64 = QAtomicInteger; + } // unnamed namespace @interface QT_MANGLE_NAMESPACE(AVFMediaAssetWriter) (PrivateAPI) @@ -93,32 +96,35 @@ enum WriterState @private AVFCameraService *m_service; - QT_PREPEND_NAMESPACE(AVFScopedPointer) m_cameraWriterInput; - QT_PREPEND_NAMESPACE(AVFScopedPointer) m_audioInput; - QT_PREPEND_NAMESPACE(AVFScopedPointer) m_audioOutput; - QT_PREPEND_NAMESPACE(AVFScopedPointer) m_audioWriterInput; + AVFScopedPointer m_cameraWriterInput; + AVFScopedPointer m_audioInput; + AVFScopedPointer m_audioOutput; + AVFScopedPointer m_audioWriterInput; + AVCaptureDevice *m_audioCaptureDevice; // Queue to write sample buffers: - QT_PREPEND_NAMESPACE(AVFScopedPointer) m_writerQueue; + AVFScopedPointer m_writerQueue; // High priority serial queue for video output: - QT_PREPEND_NAMESPACE(AVFScopedPointer) m_videoQueue; + AVFScopedPointer m_videoQueue; // Serial queue for audio output: - QT_PREPEND_NAMESPACE(AVFScopedPointer) m_audioQueue; + AVFScopedPointer m_audioQueue; - QT_PREPEND_NAMESPACE(AVFScopedPointer) m_assetWriter; + AVFScopedPointer m_assetWriter; - QT_PREPEND_NAMESPACE(AVFMediaRecorderControlIOS) *m_delegate; + AVFMediaRecorderControlIOS *m_delegate; bool m_setStartTime; - QT_PREPEND_NAMESPACE(QAtomicInt) m_state; -@private + QAtomicInt m_state; + CMTime m_startTime; CMTime m_lastTimeStamp; NSDictionary *m_audioSettings; NSDictionary *m_videoSettings; + + AVFAtomicInt64 m_durationInMs; } - (id)initWithDelegate:(AVFMediaRecorderControlIOS *)delegate @@ -500,4 +506,9 @@ enum WriterState } } +- (qint64)durationInMs +{ + return m_durationInMs.loadAcquire(); +} + @end diff --git a/src/plugins/avfoundation/camera/avfmediarecordercontrol_ios.mm b/src/plugins/avfoundation/camera/avfmediarecordercontrol_ios.mm index 0b31bd0bc..62197e900 100644 --- a/src/plugins/avfoundation/camera/avfmediarecordercontrol_ios.mm +++ b/src/plugins/avfoundation/camera/avfmediarecordercontrol_ios.mm @@ -144,7 +144,7 @@ QMediaRecorder::Status AVFMediaRecorderControlIOS::status() const qint64 AVFMediaRecorderControlIOS::duration() const { - return m_writer.data()->m_durationInMs.load(); + return m_writer.data().durationInMs; } bool AVFMediaRecorderControlIOS::isMuted() const -- cgit v1.2.3