From 327e2c7a84e11420376a6257aeebed035d430833 Mon Sep 17 00:00:00 2001 From: Rolf Eike Beer Date: Wed, 23 Oct 2019 11:23:30 +0200 Subject: QMediaPlayList: use new style connect syntax Change-Id: Idf13b2f851b78a9134b0c22ec9333f28f5b265cf Reviewed-by: VaL Doroshchuk --- src/multimedia/playback/qmediaplaylist.cpp | 48 +++++++++++++++--------------- 1 file changed, 24 insertions(+), 24 deletions(-) (limited to 'src') diff --git a/src/multimedia/playback/qmediaplaylist.cpp b/src/multimedia/playback/qmediaplaylist.cpp index 7c21a599b..9539a1809 100644 --- a/src/multimedia/playback/qmediaplaylist.cpp +++ b/src/multimedia/playback/qmediaplaylist.cpp @@ -184,20 +184,20 @@ bool QMediaPlaylist::setMediaObject(QMediaObject *mediaObject) disconnect(playlist, SIGNAL(loadFailed(QMediaPlaylist::Error,QString)), this, SLOT(_q_loadFailed(QMediaPlaylist::Error,QString))); - disconnect(playlist, SIGNAL(mediaChanged(int,int)), this, SIGNAL(mediaChanged(int,int))); - disconnect(playlist, SIGNAL(mediaAboutToBeInserted(int,int)), this, SIGNAL(mediaAboutToBeInserted(int,int))); - disconnect(playlist, SIGNAL(mediaInserted(int,int)), this, SIGNAL(mediaInserted(int,int))); - disconnect(playlist, SIGNAL(mediaAboutToBeRemoved(int,int)), this, SIGNAL(mediaAboutToBeRemoved(int,int))); - disconnect(playlist, SIGNAL(mediaRemoved(int,int)), this, SIGNAL(mediaRemoved(int,int))); + disconnect(playlist, &QMediaPlaylistProvider::mediaChanged, this, &QMediaPlaylist::mediaChanged); + disconnect(playlist, &QMediaPlaylistProvider::mediaAboutToBeInserted, this, &QMediaPlaylist::mediaAboutToBeInserted); + disconnect(playlist, &QMediaPlaylistProvider::mediaInserted, this, &QMediaPlaylist::mediaInserted); + disconnect(playlist, &QMediaPlaylistProvider::mediaAboutToBeRemoved, this, &QMediaPlaylist::mediaAboutToBeRemoved); + disconnect(playlist, &QMediaPlaylistProvider::mediaRemoved, this, &QMediaPlaylist::mediaRemoved); - disconnect(playlist, SIGNAL(loaded()), this, SIGNAL(loaded())); + disconnect(playlist, &QMediaPlaylistProvider::loaded, this, &QMediaPlaylist::loaded); - disconnect(d->control, SIGNAL(playbackModeChanged(QMediaPlaylist::PlaybackMode)), - this, SIGNAL(playbackModeChanged(QMediaPlaylist::PlaybackMode))); - disconnect(d->control, SIGNAL(currentIndexChanged(int)), - this, SIGNAL(currentIndexChanged(int))); - disconnect(d->control, SIGNAL(currentMediaChanged(QMediaContent)), - this, SIGNAL(currentMediaChanged(QMediaContent))); + disconnect(d->control, &QMediaPlaylistControl::playbackModeChanged, + this, &QMediaPlaylist::playbackModeChanged); + disconnect(d->control, &QMediaPlaylistControl::currentIndexChanged, + this, &QMediaPlaylist::currentIndexChanged); + disconnect(d->control, &QMediaPlaylistControl::currentMediaChanged, + this, &QMediaPlaylist::currentMediaChanged); // Copy playlist items, sync playback mode and sync current index between // old control and new control @@ -214,20 +214,20 @@ bool QMediaPlaylist::setMediaObject(QMediaObject *mediaObject) connect(playlist, SIGNAL(loadFailed(QMediaPlaylist::Error,QString)), this, SLOT(_q_loadFailed(QMediaPlaylist::Error,QString))); - connect(playlist, SIGNAL(mediaChanged(int,int)), this, SIGNAL(mediaChanged(int,int))); - connect(playlist, SIGNAL(mediaAboutToBeInserted(int,int)), this, SIGNAL(mediaAboutToBeInserted(int,int))); - connect(playlist, SIGNAL(mediaInserted(int,int)), this, SIGNAL(mediaInserted(int,int))); - connect(playlist, SIGNAL(mediaAboutToBeRemoved(int,int)), this, SIGNAL(mediaAboutToBeRemoved(int,int))); - connect(playlist, SIGNAL(mediaRemoved(int,int)), this, SIGNAL(mediaRemoved(int,int))); + connect(playlist, &QMediaPlaylistProvider::mediaChanged, this, &QMediaPlaylist::mediaChanged); + connect(playlist, &QMediaPlaylistProvider::mediaAboutToBeInserted, this, &QMediaPlaylist::mediaAboutToBeInserted); + connect(playlist, &QMediaPlaylistProvider::mediaInserted, this, &QMediaPlaylist::mediaInserted); + connect(playlist, &QMediaPlaylistProvider::mediaAboutToBeRemoved, this, &QMediaPlaylist::mediaAboutToBeRemoved); + connect(playlist, &QMediaPlaylistProvider::mediaRemoved, this, &QMediaPlaylist::mediaRemoved); - connect(playlist, SIGNAL(loaded()), this, SIGNAL(loaded())); + connect(playlist, &QMediaPlaylistProvider::loaded, this, &QMediaPlaylist::loaded); - connect(d->control, SIGNAL(playbackModeChanged(QMediaPlaylist::PlaybackMode)), - this, SIGNAL(playbackModeChanged(QMediaPlaylist::PlaybackMode))); - connect(d->control, SIGNAL(currentIndexChanged(int)), - this, SIGNAL(currentIndexChanged(int))); - connect(d->control, SIGNAL(currentMediaChanged(QMediaContent)), - this, SIGNAL(currentMediaChanged(QMediaContent))); + connect(d->control, &QMediaPlaylistControl::playbackModeChanged, + this, &QMediaPlaylist::playbackModeChanged); + connect(d->control, &QMediaPlaylistControl::currentIndexChanged, + this, &QMediaPlaylist::currentIndexChanged); + connect(d->control, &QMediaPlaylistControl::currentMediaChanged, + this, &QMediaPlaylist::currentMediaChanged); if (removedStart != -1 && removedEnd != -1) { emit mediaAboutToBeRemoved(removedStart, removedEnd); -- cgit v1.2.3 From a6ae689d636bfcb170333f27cddb0375aeea1dbf Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Wed, 4 Sep 2019 12:37:12 +0200 Subject: Build without OpenGL support There is support for rendering video without OpenGL on most platforms although some features are unavailable as a result, so we can make sure that what is available can be used. Change-Id: I63938e8e4e8063fcc2064d0f9d8d5f10e0fb06f9 Reviewed-by: VaL Doroshchuk --- .../qdeclarativevideooutput.cpp | 5 ++++- .../qtmultimediaquicktools.pro | 23 ++++++++++++---------- src/src.pro | 2 +- 3 files changed, 18 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/qtmultimediaquicktools/qdeclarativevideooutput.cpp b/src/qtmultimediaquicktools/qdeclarativevideooutput.cpp index 18cf0e927..74c83246f 100644 --- a/src/qtmultimediaquicktools/qdeclarativevideooutput.cpp +++ b/src/qtmultimediaquicktools/qdeclarativevideooutput.cpp @@ -206,6 +206,7 @@ void QDeclarativeVideoOutput::setSource(QObject *source) } m_sourceType = MediaObjectSource; +#if QT_CONFIG(opengl) } else if (metaObject->indexOfProperty("videoSurface") != -1) { // Make sure our backend is a QDeclarativeVideoRendererBackend m_backend.reset(); @@ -219,6 +220,7 @@ void QDeclarativeVideoOutput::setSource(QObject *source) m_source.data()->setProperty("videoSurface", QVariant::fromValue(surface)); m_sourceType = VideoSurfaceSource; +#endif } else { m_sourceType = NoSource; } @@ -247,12 +249,13 @@ bool QDeclarativeVideoOutput::createBackend(QMediaService *service) } } } - +#if QT_CONFIG(opengl) if (!backendAvailable) { m_backend.reset(new QDeclarativeVideoRendererBackend(this)); if (m_backend->init(service)) backendAvailable = true; } +#endif // QDeclarativeVideoWindowBackend only works when there is a service with a QVideoWindowControl. // Without service, the QDeclarativeVideoRendererBackend should always work. diff --git a/src/qtmultimediaquicktools/qtmultimediaquicktools.pro b/src/qtmultimediaquicktools/qtmultimediaquicktools.pro index bffdc6ec2..fd29ee5a4 100644 --- a/src/qtmultimediaquicktools/qtmultimediaquicktools.pro +++ b/src/qtmultimediaquicktools/qtmultimediaquicktools.pro @@ -16,20 +16,23 @@ PRIVATE_HEADERS += \ HEADERS += \ $$PRIVATE_HEADERS \ - qdeclarativevideooutput_render_p.h \ - qdeclarativevideooutput_window_p.h \ - qsgvideonode_yuv_p.h \ - qsgvideonode_rgb_p.h \ - qsgvideonode_texture_p.h + qdeclarativevideooutput_window_p.h SOURCES += \ qsgvideonode_p.cpp \ qdeclarativevideooutput.cpp \ - qdeclarativevideooutput_render.cpp \ - qdeclarativevideooutput_window.cpp \ - qsgvideonode_yuv.cpp \ - qsgvideonode_rgb.cpp \ - qsgvideonode_texture.cpp + qdeclarativevideooutput_window.cpp + +qtConfig(opengl) { + SOURCES += qdeclarativevideooutput_render.cpp \ + qsgvideonode_rgb.cpp \ + qsgvideonode_yuv.cpp \ + qsgvideonode_texture.cpp + HEADERS += qdeclarativevideooutput_render_p.h \ + qsgvideonode_rgb_p.h \ + qsgvideonode_yuv_p.h \ + qsgvideonode_texture_p.h +} RESOURCES += \ qtmultimediaquicktools.qrc diff --git a/src/src.pro b/src/src.pro index 97a053379..1dc1015c6 100644 --- a/src/src.pro +++ b/src/src.pro @@ -16,7 +16,7 @@ src_plugins.subdir = plugins src_plugins.depends = multimedia -qtHaveModule(quick):qtConfig(opengl) { +qtHaveModule(quick) { src_qtmultimediaquicktools.subdir = qtmultimediaquicktools src_qtmultimediaquicktools.depends = multimedia -- cgit v1.2.3 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') 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 8b92454d6fffcee7a8cf1fb5e0c92920c77733c8 Mon Sep 17 00:00:00 2001 From: VaL Doroshchuk Date: Fri, 25 Oct 2019 12:29:34 +0200 Subject: ALSA: Calculate buffer size based on min period time MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When defualt buffer size (100000us) and period time (20000us) are out of range, currently buffer size is computed with respect of either 2 or 4 chunks of maximum buffer time. Which is not enough. Fixing computing of buffer time based on minimum period time: How many minimum periods could fit in maximum suggested buffer time. Fixes: QTBUG-43256 Task-number: QTBUG-79526 Change-Id: I722e5145e3b6d323e306da420ec764db3575225f Reviewed-by: Christian Strømme --- src/plugins/alsa/qalsaaudiooutput.cpp | 34 +++++++++++++++------------------- 1 file changed, 15 insertions(+), 19 deletions(-) (limited to 'src') diff --git a/src/plugins/alsa/qalsaaudiooutput.cpp b/src/plugins/alsa/qalsaaudiooutput.cpp index ddbe04de9..5c8ae171c 100644 --- a/src/plugins/alsa/qalsaaudiooutput.cpp +++ b/src/plugins/alsa/qalsaaudiooutput.cpp @@ -53,9 +53,11 @@ #include #include "qalsaaudiooutput.h" #include "qalsaaudiodeviceinfo.h" +#include QT_BEGIN_NAMESPACE +Q_LOGGING_CATEGORY(lcAlsaOutput, "qt.multimedia.alsa.output") //#define DEBUG_AUDIO 1 QAlsaAudioOutput::QAlsaAudioOutput(const QByteArray &device) @@ -403,28 +405,22 @@ bool QAlsaAudioOutput::open() fatal = true; errMessage = QString::fromLatin1("QAudioOutput: buffer/period min and max: err = %1").arg(err); } else { - if (maxBufferTime < buffer_time || buffer_time < minBufferTime || maxPeriodTime < period_time || minPeriodTime > period_time) { -#ifdef DEBUG_AUDIO - qDebug()<<"defaults out of range"; - qDebug()<<"pmin="< period_time; + if (outOfRange || user_period_time || user_buffer_time) { + period_time = user_period_time ? user_period_time : minPeriodTime; + if (!user_buffer_time) { + chunks = maxBufferTime / period_time; + buffer_time = period_time * chunks; } else { - qWarning()<<"QAudioOutput: alsa only supports single period!"; - fatal = true; + buffer_time = user_buffer_time; + chunks = buffer_time / period_time; } -#ifdef DEBUG_AUDIO - qDebug()<<"used: buffer_time="<