summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-11-12 03:03:27 +0100
committerQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-11-12 03:03:28 +0100
commitc8496db8f90bcdc6b8ee02ab76ed5425c447f339 (patch)
treed57f4fcfb177a6750e2c597f53ac7285ba77431e
parenta045c989e15feda1201e81d8c2a7a403c33ad6da (diff)
parent3d33ebd547d5cdc16e6f8700282035ac3b96e604 (diff)
Merge remote-tracking branch 'origin/5.13' into 5.14
-rw-r--r--src/gsttools/qgstreamerplayercontrol.cpp8
-rw-r--r--src/gsttools/qgstreamerplayersession.cpp3
-rw-r--r--src/plugins/avfoundation/camera/avfmediaassetwriter.h9
-rw-r--r--src/plugins/avfoundation/camera/avfmediaassetwriter.mm33
-rw-r--r--src/plugins/avfoundation/camera/avfmediarecordercontrol_ios.mm2
-rw-r--r--src/plugins/opensles/qopenslesaudioinput.cpp2
-rw-r--r--src/plugins/opensles/qopenslesaudioinput.h1
-rw-r--r--src/plugins/opensles/qopenslesengine.cpp3
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