diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-11-12 03:03:27 +0100 |
---|---|---|
committer | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-11-12 03:03:28 +0100 |
commit | c8496db8f90bcdc6b8ee02ab76ed5425c447f339 (patch) | |
tree | d57f4fcfb177a6750e2c597f53ac7285ba77431e | |
parent | a045c989e15feda1201e81d8c2a7a403c33ad6da (diff) | |
parent | 3d33ebd547d5cdc16e6f8700282035ac3b96e604 (diff) | |
download | qtmultimedia-c8496db8f90bcdc6b8ee02ab76ed5425c447f339.tar.gz |
Merge remote-tracking branch 'origin/5.13' into 5.14
Change-Id: I5b99b3d05502e15373ebaedcad06d6ab4d25d387
-rw-r--r-- | src/gsttools/qgstreamerplayercontrol.cpp | 8 | ||||
-rw-r--r-- | src/gsttools/qgstreamerplayersession.cpp | 3 | ||||
-rw-r--r-- | src/plugins/avfoundation/camera/avfmediaassetwriter.h | 9 | ||||
-rw-r--r-- | src/plugins/avfoundation/camera/avfmediaassetwriter.mm | 33 | ||||
-rw-r--r-- | src/plugins/avfoundation/camera/avfmediarecordercontrol_ios.mm | 2 | ||||
-rw-r--r-- | src/plugins/opensles/qopenslesaudioinput.cpp | 2 | ||||
-rw-r--r-- | src/plugins/opensles/qopenslesaudioinput.h | 1 | ||||
-rw-r--r-- | src/plugins/opensles/qopenslesengine.cpp | 3 |
8 files changed, 36 insertions, 25 deletions
diff --git a/src/gsttools/qgstreamerplayercontrol.cpp b/src/gsttools/qgstreamerplayercontrol.cpp index bd4c90ac5..165978288 100644 --- a/src/gsttools/qgstreamerplayercontrol.cpp +++ b/src/gsttools/qgstreamerplayercontrol.cpp @@ -450,6 +450,10 @@ void QGstreamerPlayerControl::updateSessionState(QMediaPlayer::State state) void QGstreamerPlayerControl::updateMediaStatus() { + //EndOfMedia status should be kept, until reset by pause, play or setMedia + if (m_mediaStatus == QMediaPlayer::EndOfMedia) + return; + pushState(); QMediaPlayer::MediaStatus oldStatus = m_mediaStatus; @@ -477,10 +481,6 @@ void QGstreamerPlayerControl::updateMediaStatus() if (m_currentState == QMediaPlayer::PlayingState && !m_resources->isGranted()) m_mediaStatus = QMediaPlayer::StalledMedia; - //EndOfMedia status should be kept, until reset by pause, play or setMedia - if (oldStatus == QMediaPlayer::EndOfMedia) - m_mediaStatus = QMediaPlayer::EndOfMedia; - popAndNotifyState(); } diff --git a/src/gsttools/qgstreamerplayersession.cpp b/src/gsttools/qgstreamerplayersession.cpp index b9e1c084f..ed3f16c5f 100644 --- a/src/gsttools/qgstreamerplayersession.cpp +++ b/src/gsttools/qgstreamerplayersession.cpp @@ -265,8 +265,11 @@ void QGstreamerPlayerSession::resetElements() resetGstObject(m_nullVideoSink); resetGstObject(m_videoOutputBin); + m_audioSink = nullptr; m_volumeElement = nullptr; m_videoIdentity = nullptr; + m_pendingVideoSink = nullptr; + m_videoSink = nullptr; } GstElement *QGstreamerPlayerSession::playbin() const 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 <QtCore/qglobal.h> -#include <QtCore/qatomic.h> #include <AVFoundation/AVFoundation.h> @@ -52,17 +51,10 @@ QT_BEGIN_NAMESPACE class AVFMediaRecorderControlIOS; class AVFCameraService; -typedef QAtomicInteger<qint64> AVFAtomicInt64; - QT_END_NAMESPACE @interface QT_MANGLE_NAMESPACE(AVFMediaAssetWriter) : NSObject<AVCaptureVideoDataOutputSampleBufferDelegate, AVCaptureAudioDataOutputSampleBufferDelegate> -{ -@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 <QtCore/qmetaobject.h> +#include <QtCore/qatomic.h> QT_USE_NAMESPACE @@ -79,6 +80,8 @@ enum WriterState WriterStateAborted }; +using AVFAtomicInt64 = QAtomicInteger<qint64>; + } // unnamed namespace @interface QT_MANGLE_NAMESPACE(AVFMediaAssetWriter) (PrivateAPI) @@ -93,32 +96,35 @@ enum WriterState @private AVFCameraService *m_service; - QT_PREPEND_NAMESPACE(AVFScopedPointer)<AVAssetWriterInput> m_cameraWriterInput; - QT_PREPEND_NAMESPACE(AVFScopedPointer)<AVCaptureDeviceInput> m_audioInput; - QT_PREPEND_NAMESPACE(AVFScopedPointer)<AVCaptureAudioDataOutput> m_audioOutput; - QT_PREPEND_NAMESPACE(AVFScopedPointer)<AVAssetWriterInput> m_audioWriterInput; + AVFScopedPointer<AVAssetWriterInput> m_cameraWriterInput; + AVFScopedPointer<AVCaptureDeviceInput> m_audioInput; + AVFScopedPointer<AVCaptureAudioDataOutput> m_audioOutput; + AVFScopedPointer<AVAssetWriterInput> m_audioWriterInput; + AVCaptureDevice *m_audioCaptureDevice; // Queue to write sample buffers: - QT_PREPEND_NAMESPACE(AVFScopedPointer)<dispatch_queue_t> m_writerQueue; + AVFScopedPointer<dispatch_queue_t> m_writerQueue; // High priority serial queue for video output: - QT_PREPEND_NAMESPACE(AVFScopedPointer)<dispatch_queue_t> m_videoQueue; + AVFScopedPointer<dispatch_queue_t> m_videoQueue; // Serial queue for audio output: - QT_PREPEND_NAMESPACE(AVFScopedPointer)<dispatch_queue_t> m_audioQueue; + AVFScopedPointer<dispatch_queue_t> m_audioQueue; - QT_PREPEND_NAMESPACE(AVFScopedPointer)<AVAssetWriter> m_assetWriter; + AVFScopedPointer<AVAssetWriter> 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 diff --git a/src/plugins/opensles/qopenslesaudioinput.cpp b/src/plugins/opensles/qopenslesaudioinput.cpp index ad87cb057..54ed18ac1 100644 --- a/src/plugins/opensles/qopenslesaudioinput.cpp +++ b/src/plugins/opensles/qopenslesaudioinput.cpp @@ -117,6 +117,8 @@ QOpenSLESAudioInput::QOpenSLESAudioInput(const QByteArray &device) m_recorderPreset = SL_ANDROID_RECORDING_PRESET_CAMCORDER; else if (qstrcmp(device, QT_ANDROID_PRESET_VOICE_RECOGNITION) == 0) m_recorderPreset = SL_ANDROID_RECORDING_PRESET_VOICE_RECOGNITION; + else if (qstrcmp(device, QT_ANDROID_PRESET_VOICE_COMMUNICATION) == 0) + m_recorderPreset = SL_ANDROID_RECORDING_PRESET_VOICE_COMMUNICATION; else m_recorderPreset = SL_ANDROID_RECORDING_PRESET_GENERIC; #endif diff --git a/src/plugins/opensles/qopenslesaudioinput.h b/src/plugins/opensles/qopenslesaudioinput.h index ad84db0cd..35cc37959 100644 --- a/src/plugins/opensles/qopenslesaudioinput.h +++ b/src/plugins/opensles/qopenslesaudioinput.h @@ -50,6 +50,7 @@ #define QT_ANDROID_PRESET_MIC "mic" #define QT_ANDROID_PRESET_CAMCORDER "camcorder" #define QT_ANDROID_PRESET_VOICE_RECOGNITION "voicerecognition" +#define QT_ANDROID_PRESET_VOICE_COMMUNICATION "voicecommunication" #endif diff --git a/src/plugins/opensles/qopenslesengine.cpp b/src/plugins/opensles/qopenslesengine.cpp index 43cdcb276..36025dcfd 100644 --- a/src/plugins/opensles/qopenslesengine.cpp +++ b/src/plugins/opensles/qopenslesengine.cpp @@ -114,7 +114,8 @@ QList<QByteArray> QOpenSLESEngine::availableDevices(QAudio::Mode mode) const #ifdef ANDROID devices << QT_ANDROID_PRESET_MIC << QT_ANDROID_PRESET_CAMCORDER - << QT_ANDROID_PRESET_VOICE_RECOGNITION; + << QT_ANDROID_PRESET_VOICE_RECOGNITION + << QT_ANDROID_PRESET_VOICE_COMMUNICATION; #else devices << "default"; #endif |