diff options
-rw-r--r-- | .qmake.conf | 2 | ||||
-rw-r--r-- | dist/changes-5.12.10 | 28 | ||||
-rw-r--r-- | dist/changes-5.12.8 | 29 | ||||
-rw-r--r-- | dist/changes-5.12.9 | 31 | ||||
-rw-r--r-- | src/plugins/alsa/qalsaaudiooutput.cpp | 34 | ||||
-rw-r--r-- | src/plugins/gstreamer/camerabin/camerabinsession.cpp | 3 | ||||
-rw-r--r-- | src/plugins/videonode/imx6/qsgvivantevideomaterial.cpp | 10 | ||||
-rw-r--r-- | src/plugins/videonode/imx6/qsgvivantevideomaterial.h | 2 |
8 files changed, 111 insertions, 28 deletions
diff --git a/.qmake.conf b/.qmake.conf index 04f5843a4..912747cbb 100644 --- a/.qmake.conf +++ b/.qmake.conf @@ -1,3 +1,3 @@ load(qt_build_config) -MODULE_VERSION = 5.12.8 +MODULE_VERSION = 5.12.12 diff --git a/dist/changes-5.12.10 b/dist/changes-5.12.10 new file mode 100644 index 000000000..c9b97b2a9 --- /dev/null +++ b/dist/changes-5.12.10 @@ -0,0 +1,28 @@ +Qt 5.12.10 is a bug-fix release. It maintains both forward and backward +compatibility (source and binary) with Qt 5.12.9. + +For more details, refer to the online documentation included in this +distribution. The documentation is also available online: + + https://doc.qt.io/qt-5.12/index.html + +The Qt version 5.12 series is binary compatible with the 5.11.x series. +Applications compiled for 5.11 will continue to run with 5.12. + +Some of the changes listed in this file include issue tracking numbers +corresponding to tasks in the Qt Bug Tracker: + + https://bugreports.qt.io/ + +Each of these identifiers can be entered in the bug tracker to obtain more +information about a particular change. + +**************************************************************************** +* Important Behavior Changes * +**************************************************************************** + +**************************************************************************** +* Library * +**************************************************************************** + + diff --git a/dist/changes-5.12.8 b/dist/changes-5.12.8 new file mode 100644 index 000000000..aac293249 --- /dev/null +++ b/dist/changes-5.12.8 @@ -0,0 +1,29 @@ +Qt 5.12.8 is a bug-fix release. It maintains both forward and backward +compatibility (source and binary) with Qt 5.12.0 through 5.12.7. + +For more details, refer to the online documentation included in this +distribution. The documentation is also available online: + +https://doc.qt.io/qt-5/index.html + +The Qt version 5.12 series is binary compatible with the 5.11.x series. +Applications compiled for 5.11 will continue to run with 5.12. + +Some of the changes listed in this file include issue tracking numbers +corresponding to tasks in the Qt Bug Tracker: + +https://bugreports.qt.io/ + +Each of these identifiers can be entered in the bug tracker to obtain more +information about a particular change. + + - This release contains only minor code improvements. + +**************************************************************************** +* Platform Specific Changes * +**************************************************************************** + +- AVFoundation: + * [QTBUG-81048] Fixed regression when QCameraViewfinderSettings was not applied + until the camera is being started. Now the view finder settings should be applied + even if the camera is not active. diff --git a/dist/changes-5.12.9 b/dist/changes-5.12.9 new file mode 100644 index 000000000..caa08b0c5 --- /dev/null +++ b/dist/changes-5.12.9 @@ -0,0 +1,31 @@ +Qt 5.12.9 is a bug-fix release. It maintains both forward and backward +compatibility (source and binary) with Qt 5.12.0 through 5.12.8. + +For more details, refer to the online documentation included in this +distribution. The documentation is also available online: + +https://doc.qt.io/qt-5/index.html + +The Qt version 5.12 series is binary compatible with the 5.11.x series. +Applications compiled for 5.11 will continue to run with 5.12. + +Some of the changes listed in this file include issue tracking numbers +corresponding to tasks in the Qt Bug Tracker: + +https://bugreports.qt.io/ + +Each of these identifiers can be entered in the bug tracker to obtain more +information about a particular change. + + - This release contains only minor code improvements. + +**************************************************************************** +* Platform Specific Changes * +**************************************************************************** + +- Vivante: + * The imx6 vivante implementation now does not keep previous video buffer + which fixed jerky playback when frames are not coming at constant rate. + +- ALSA: + * [QTBUG-43256] Fixed choppy sound playback by adjusting audio buffer size. 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 <QtMultimedia/private/qaudiohelpers_p.h> #include "qalsaaudiooutput.h" #include "qalsaaudiodeviceinfo.h" +#include <QLoggingCategory> 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="<<minPeriodTime<<", pmax="<<maxPeriodTime<<", bmin="<<minBufferTime<<", bmax="<<maxBufferTime; -#endif - period_time = minPeriodTime; - if (period_time*4 <= maxBufferTime) { - // Use 4 periods if possible - buffer_time = period_time*4; - chunks = 4; - } else if (period_time*2 <= maxBufferTime) { - // Use 2 periods if possible - buffer_time = period_time*2; - chunks = 2; + static unsigned user_buffer_time = qEnvironmentVariableIntValue("QT_ALSA_OUTPUT_BUFFER_TIME"); + static unsigned user_period_time = qEnvironmentVariableIntValue("QT_ALSA_OUTPUT_PERIOD_TIME"); + const bool outOfRange = maxBufferTime < buffer_time || buffer_time < minBufferTime || maxPeriodTime < period_time || minPeriodTime > 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="<<buffer_time<<", period_time="<<period_time; -#endif } + qCDebug(lcAlsaOutput) << "buffer time: [" << minBufferTime << "-" << maxBufferTime << "] =" << buffer_time; + qCDebug(lcAlsaOutput) << "period time: [" << minPeriodTime << "-" << maxPeriodTime << "] =" << period_time; + qCDebug(lcAlsaOutput) << "chunks =" << chunks; } } if ( !fatal ) { diff --git a/src/plugins/gstreamer/camerabin/camerabinsession.cpp b/src/plugins/gstreamer/camerabin/camerabinsession.cpp index 23cbd6082..6cc7e7e28 100644 --- a/src/plugins/gstreamer/camerabin/camerabinsession.cpp +++ b/src/plugins/gstreamer/camerabin/camerabinsession.cpp @@ -1304,6 +1304,7 @@ QList< QPair<int,int> > CameraBinSession::supportedFrameRates(const QSize &frame g_value_copy(oldRate, &rate); gst_structure_remove_all_fields(structure); gst_structure_set_value(structure, "framerate", &rate); + g_value_unset(&rate); } #if GST_CHECK_VERSION(1,0,0) caps = gst_caps_simplify(caps); @@ -1422,6 +1423,8 @@ QList<QSize> CameraBinSession::supportedResolutions(QPair<int,int> rate, gst_structure_remove_all_fields(structure); gst_structure_set_value(structure, "width", &w); gst_structure_set_value(structure, "height", &h); + g_value_unset(&w); + g_value_unset(&h); } #if GST_CHECK_VERSION(1,0,0) diff --git a/src/plugins/videonode/imx6/qsgvivantevideomaterial.cpp b/src/plugins/videonode/imx6/qsgvivantevideomaterial.cpp index 4b68f47a4..7e5333457 100644 --- a/src/plugins/videonode/imx6/qsgvivantevideomaterial.cpp +++ b/src/plugins/videonode/imx6/qsgvivantevideomaterial.cpp @@ -102,7 +102,7 @@ void QSGVivanteVideoMaterial::updateBlending() { void QSGVivanteVideoMaterial::setCurrentFrame(const QVideoFrame &frame, QSGVideoNode::FrameFlags flags) { QMutexLocker lock(&mFrameMutex); - mNextFrame = frame; + mCurrentFrame = frame; mMappable = mMapError == GL_NO_ERROR && !flags.testFlag(QSGVideoNode::FrameFiltered); #ifdef QT_VIVANTE_VIDEO_DEBUG @@ -119,12 +119,8 @@ void QSGVivanteVideoMaterial::bind() } QMutexLocker lock(&mFrameMutex); - if (mNextFrame.isValid()) { - mCurrentFrame.unmap(); - - mCurrentFrame = mNextFrame; - mCurrentTexture = vivanteMapping(mNextFrame); - } + if (mCurrentFrame.isValid()) + mCurrentTexture = vivanteMapping(mCurrentFrame); else glBindTexture(GL_TEXTURE_2D, mCurrentTexture); } diff --git a/src/plugins/videonode/imx6/qsgvivantevideomaterial.h b/src/plugins/videonode/imx6/qsgvivantevideomaterial.h index adbd960a4..db59e8fc7 100644 --- a/src/plugins/videonode/imx6/qsgvivantevideomaterial.h +++ b/src/plugins/videonode/imx6/qsgvivantevideomaterial.h @@ -78,7 +78,7 @@ private: QVideoFrame::PixelFormat mFormat; QMap<const uchar*, GLuint> mBitsToTextureMap; - QVideoFrame mCurrentFrame, mNextFrame; + QVideoFrame mCurrentFrame; GLuint mCurrentTexture; bool mMappable; GLenum mMapError = GL_NO_ERROR; |