summaryrefslogtreecommitdiffstats
path: root/src/multimedia/audio
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote-tracking branch 'origin/5.12' into 5.13Qt Forward Merge Bot2019-03-272-2/+2
|\ | | | | | | | | | | | | Conflicts: .qmake.conf Change-Id: Ie0a7534d518cd5758119edc77d8275ac3da2037c
| * Add source url to 'decoding error' warningRoland Rossgotterer2019-03-252-2/+2
| | | | | | | | | | | | | | | | | | | | | | Previously, QSoundEffect logged a warning if the source could not be decoded, but without mentioning the source it tried to decode. When using multiple QSoundEffects in one application, adding the source to the warning will help to find the one causing the decode error. Change-Id: I4c6bbdfe4a62f650b64ab951bcc637febedae98e Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io> Reviewed-by: André Hartmann <aha_1980@gmx.de>
* | multimedia: modernize by using nullptrJochen Seemann2019-01-048-38/+38
| | | | | | | | | | | | Change-Id: Id1084fec084b972aaa1d2389ee56ee831a821172 Reviewed-by: André Hartmann <aha_1980@gmx.de> Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
* | Merge remote-tracking branch 'origin/5.12' into devQt Forward Merge Bot2018-11-171-1/+1
|\| | | | | | | Change-Id: Iaf74b2b0f03af46942beaa5aa1fc61296a66ec47
| * Alsa: Do not open device twice in QSoundEffectVaL Doroshchuk2018-11-051-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When either QSoundEffect::loadedChanged or QSoundEffect::statusChanged is emitted QSoundEffect::play() can be called which results to call QAudioOutput::start() twice. Added a fix to call QAudioOutput::start() only if QAudioOutput::state() is QAudio::StoppedState. Flow trace: 1. PrivateSoundSource::sampleReady() 2. QSoundEffectPrivate::setStatus(QSoundEffect::Ready) and emits statusChanged() or loadedChanged() 3. If there is a connection to QSoundEffect::loadedChanged/statusChanged and QSoundEffect::play() is called there. 4. QSoundEffect::play() calls QAudioOutput::start() because sample is ready 5. QAudioOutput::start() is called again within PrivateSoundSource::sampleReady() when QSoundEffectPrivate::setStatus exited. Change-Id: I7ad8e9126b6006e1972356c80a7fd2e5c6a5ea04 Reviewed-by: Andy Shaw <andy.shaw@qt.io> Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* | Add a support for selecting the output device used by QSoundEffectOtto Ryynänen2018-10-306-18/+54
|/ | | | | | | | | | | | | The QSoundEffect can be forced to use a specific audio output device. This is useful on a system with multiple output devices as individual QSoundeffects can use separate output devices. Due to way QAudioOutput (alternate implementation behind QSoundEffect) is implemented, QAudioDeviceInfo is used as a method of defining the output device to be used. Task-number: QTBUG-63596 Change-Id: Ibfb9894fec914726faee4e31c42ab08832693cf6 Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
* Fix warning on deleteLater on nullptr in QSampleCachePierre Hallot2018-07-241-2/+4
| | | | | | | | | | | | | | It is possible to have a loading thread running, but with no network manager. In that case, calling deleteLater() on m_networkAccessManager results in a warning: postEvent: Unexpected null receiver. Fix this issue by checking whether the network manager exists before calling deleteLater() on it. Task-number: QTBUG-66910 Change-Id: I818a87a605b4e906dee47c6c815a6b8112b16829 Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
* QSampleCache: Fix memory leakOrgad Shaneh2018-07-051-2/+1
| | | | | | | | | | | | | | and a warning on termination: QCoreApplication::postEvent: Unexpected null receiver During static deinit it is not possible to use deleteLater, as there is no event loop running at this stage. The crash that was described in QTBUG-30630 doesn't reproduce with Qt 5.10, so I guess it should be safe to just delete. Change-Id: I0c404d71e9f102018e314c890ff679f8c0952b07 Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
* QSoundEffect: Check if network access manager is already releasedVal Doroshchuk2018-05-111-1/+2
| | | | | | | | | In case if network access manager is already released need to prevent using it in dtor. Task-number: QTBUG-66754 Change-Id: I9f61e284b39e920dadf771d807a4b7dce2a353f7 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* QSoundEffect: Release QAudioOutput when new source url appliedVal Doroshchuk2018-05-091-0/+7
| | | | | | | | | | | | When sample is ready QAudioOutput is created with sample's format. In case when new source url is applied old format is reused in QAudioOutput instance which might lead incorrect playback. Task-number: QTBUG-54262 Change-Id: I84af167412cb53726593a3bfd4193fc7cd71f332 Reviewed-by: Andy Shaw <andy.shaw@qt.io> Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* QSound(Effect): Cleanup coding styleAndre Hartmann2018-04-264-11/+11
| | | | | Change-Id: Ie8589bb55388c1f41b1706b6571e2eec401fc415 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* QSound: Allow to play files with qrc schemaAndre Hartmann2018-04-251-1/+10
| | | | | | | | It was possible to play resource files only by prefix ":/". Added support of qrc schema in filenames. Change-Id: I9e538422828ad2107ab5567d172dca8728cbc64d Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
* Doc: Fix documentation warningsTopi Reinio2018-04-196-19/+13
| | | | | | | | | | | | Add a custom module header, used only for documentation builds, that pulls in also the QtMultimediaWidgets module. Several documentation fixes to clean up warnings from clang. Task-number: QTBUG-67790 Change-Id: I6c1013798a648250c8555eb92684ec3b33ff7531 Reviewed-by: Martin Smith <martin.smith@qt.io> Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QSound(Effect): Use C++11 member initializationv5.11.0-beta3Andre Hartmann2018-03-276-77/+48
| | | | | Change-Id: Iec7442f4621ad131bf6291e0f5d013ee379c5e3b Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* QSound: Fix comment typosAndre Hartmann2018-03-271-3/+3
| | | | | Change-Id: I13cf879be6fc6225552990b8196aeb39299b8e3f Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* QSound(Effect): Convert to functor-style connectAndre Hartmann2018-03-274-31/+38
| | | | | Change-Id: Ie58ee30b1ace836c620812b8063246c0d01d7214 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* QSoundEffectPrivate: Use nullptr instead 0 or NULLAndre Hartmann2018-03-232-37/+39
| | | | | | Change-Id: I62e3d4d1284adeea457d754d63650b5c9b81e276 Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io> Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* Support changing of volume in 24-bit audio samplesVaL Doroshchuk2018-03-221-0/+49
| | | | | | | | Introduced a fix to support changing of volume for 3 bytes samples audio stream. Task-number: QTBUG-60579 Change-Id: I4ba4a9a1cf65812ccbc46b40c78546875d5e4d73 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* Merge remote-tracking branch 'origin/5.10' into 5.11Liang Qi2018-02-121-1/+2
|\ | | | | | | Change-Id: I397c78d33594f4b64d9718cd1b180fa0cee1e5bc
| * Merge remote-tracking branch 'origin/5.9' into 5.105.10Liang Qi2018-02-021-1/+2
| |\ | | | | | | | | | Change-Id: I0564f22f9001d373ad03426dd6d9f584fbab7115
| | * PulseAudio: Prevent crash when a sound device cannot be createdAndy Shaw2018-01-241-1/+2
| | | | | | | | | | | | | | | Change-Id: I74436b9e8903dd3d38926497594ee195f31c81e6 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* | | Doc: Fix clang-qdoc diagnostic warningsVenugopal Shivashankar2018-01-081-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - qtmultimedia/src/multimedia/audio/qaudiobuffer.cpp:533: (qdoc) warning: clang found diagnostics parsing \fn QAudioBuffer::StereoFrame::StereoFrame() - qtmultimedia/src/multimedia/audio/qaudiobuffer.cpp:540: (qdoc) warning: clang found diagnostics parsing \fn QAudioBuffer::StereoFrame::StereoFrame(T leftSample, T rightSample) - qtmultimedia/src/multimedia/audio/qaudiobuffer.cpp:546: (qdoc) warning: clang found diagnostics parsing \fn QAudioBuffer::StereoFrame::operator=(const StereoFrame &other) - qtmultimedia/src/multimedia/audio/qaudiobuffer.cpp:553: (qdoc) warning: clang found diagnostics parsing \fn QAudioBuffer::StereoFrame::average() const - qtmultimedia/src/multimedia/audio/qaudiobuffer.cpp:559: (qdoc) warning: clang found diagnostics parsing \fn QAudioBuffer::StereoFrame::clear() - qtmultimedia/src/multimedia/audio/qaudiobuffer.h:120: (qdoc) warning: No documentation for 'QAudioBuffer::StereoFrame::average() const' - qtmultimedia/src/multimedia/audio/qaudiobuffer.h:121: (qdoc) warning: No documentation for 'QAudioBuffer::StereoFrame::clear()' Change-Id: Icd06a43d4684b2106a74d2bc408f9ab8b7572d7b Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* | | Merge remote-tracking branch 'origin/5.10' into devLiang Qi2018-01-063-8/+15
|\| | | | | | | | | | | | | | | | | | | | Conflicts: .qmake.conf Change-Id: I5acdc7e0bd3729b80522dfff0f388cf2507fb111
| * | Merge remote-tracking branch 'origin/5.9' into 5.10Liang Qi2018-01-061-1/+4
| |\| | | | | | | | | | | | | | | | | | | Conflicts: .qmake.conf Change-Id: I3d6e69f3f99b2f0a0e2c29ffdd02176e1f22304e
| | * Fix memory leak in QSoundEffectVaL Doroshchuk2017-12-141-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | If qthread is being exited all objects that belong to it also should be cleaned up. Task-number: QTBUG-64407 Change-Id: Ida09fcfac7e1ee2741c6e1b76a672a7a5775addc Reviewed-by: Christian Stromme <christian.stromme@qt.io>
| * | PulseAudio: Fix deadlock for QSoundEffect in setMuted, setVolumeVaL Doroshchuk2017-12-192-7/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The deadlock would happen when one of the protected functions were reentered, as the lock used was not recursive. Since reading and writing to the volume and muted properties don't happen that often, the rw-mutex was replaced by a normal non-recursive mutex, which is now unlocked before the property changed signal is emitted. Task-number: QTBUG-65220 Change-Id: I1a224e9ff03f14593a854a7c1049c8a0445e29e6 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* | | Merge remote-tracking branch 'origin/5.10' into devLiang Qi2017-10-191-13/+16
|\| | | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/qnx/mediaplayer/mmreventmediaplayercontrol.h Change-Id: Ic6e27742ef6d1af0532ad05902a1431ebd5f449d
| * | PulseAudio: Support 24 bit framesVaL Doroshchuk2017-09-261-13/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | Applied 24 bits frames support and also stronger restrictions for supported formats: https://freedesktop.org/software/pulseaudio/doxygen/sample.html Task-number: QTBUG-63427 Change-Id: If5372217cbf16c1152db55748adcfbd61263403d Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* | | Replace Q_NULLPTR with nullptrKevin Funk2017-09-277-9/+9
| | | | | | | | | | | | | | | Change-Id: I3b7601b4a97f8a2b1d2da6ef134f1577846ba713 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Add custom audio role API to QMediaPlayerJames McDonnell2017-09-062-1/+6
|/ / | | | | | | | | | | | | | | | | | | | | | | Allows use of audio roles beyond those known to Qt. [ChangeLog][QMediaPlayer] Added customAudioRole string property to enable use of audio roles beyond those available via the audioRole enum property. Change-Id: Id7ed5d7bc1af0c15910e699f25c97cfed2d48243 Reviewed-by: Christian Stromme <christian.stromme@qt.io> Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
* | PulseAudio: allow to disable the pulseaudio autospawn featureBartosz Golaszewski2017-07-121-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | By default pa_context_connect() tries to spawn a new pulseaudio instance if it the connection fails. This is not always desirable. Add a new environment variable: QT_PULSE_NOAUTOSPAWN which - when set - will make QSoundEffect pass the PA_CONTEXT_NOAUTOSPAWN flag to pa_context_connect() thus disabling the autospawn feature. Change-Id: I623639fd5a262c8fefbd683fa9481916e79bdf0e Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* | PulseAudio: allow to specify the pulseaudio server stringBartosz Golaszewski2017-07-121-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | Currently we call pa_context_connect() with an empty server string. This works fine if we only want to connect to the default pulseaudio server, but we may want to specify the server string on systems with custom configuration. Add a new environment variable: QT_PULSE_SERVER_STRING which allows to specify the server string passed to pa_context_connect(). Change-Id: I6805ff5e941d13bc91d306e5df3ab5d04a8a90af Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* | Merge remote-tracking branch 'origin/5.9' into devChristian Strømme2017-07-072-3/+3
|\| | | | | | | Change-Id: Ifda1f02b8458a4fbe85d8bc27e61d4646147d82c
| * Doc: Fix wrong slashRainer Keller2017-07-071-1/+1
| | | | | | | | | | Change-Id: I979c7d8d01b00689269a7969b628864ca5eab991 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
| * PulseAudio: fix a pthread_mutex crash in error pathBartosz Golaszewski2017-07-061-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QSoundEffect (pulseaudio) uses a workaround for stability issues: although the pulseaudio mainloop mutex is recursive, it utilizes a separate lock counting. This is not the best solution, but it is a part of a larger set of changes which improved the stability in CI under heavy load. QSoundEffect always calls pa_threaded_mainloop_lock/unlock() from the same thread so the additional lock counting works in normal situation even though it doesn't use atomic types. However if pa_context_connect() fails, pa_threaded_mainloop_unlock() is called without regard to current lock count. This leads to random double-unlock aborts if pa_context_connect() fails more than once (e.g. after the reconnect scheduled from onContextFailed()). Fix this by always using the PulseDaemon wrappers around pa_threaded_mainloop_lock/unlock(). Task-number: QTBUG-61725 Change-Id: I41eb9a76892a6646fd5620ef8f686473b339464f Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* | io-audio based audio management for QNX 7.0.0James McDonnell2017-03-272-8/+16
|/ | | | | | | | | | | | | | | | | | | | Add code to setup and handle io-audio based audio management notifications. Add InterruptedState to QAudio::State. Indicates that this stream is in a suspended state because another higher priority stream currently has control of the audio device. Playback cannot resume until the higher priority stream relinquishes control of the audio device. Adjust the documentation for QAudio::State SuspendedState to reflect the fact that audio management events can also put the stream into this state. Add InterruptedState handling to the spectrum example. Change-Id: Ie8616af03ae4c503de1d0571a222e5853035cc0e Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
* Merge remote-tracking branch 'origin/5.8' into 5.9Liang Qi2017-03-102-6/+4
|\ | | | | | | | | | | | | Conflicts: src/plugins/gstreamer/camerabin/camerabincontainer.h Change-Id: I4942d41d69112335fe0c994002f1b32ef3aad051
| * Use QT_CONFIG macro to check for featuresLars Knoll2017-02-272-5/+3
| | | | | | | | | | | | | | And remove many custom defines. Change-Id: I658cc8430d1d99ed3c0aafe03a77adce76621a29 Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
| * Make pulseaudio dependency privateAlexander Volkov2017-02-031-1/+1
| | | | | | | | | | | | | | | | Otherwise projects that depend on multimedia module fail to build. Change-Id: I44a614fd3b2bea934149f8bf55eaeb17069258d5 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* | Make QAudioSystemPlugin doc visible.Yoann Lopes2017-01-272-4/+0
| | | | | | | | | | Change-Id: I0384fd6069349f321e60ffedd03834f1c46f634b Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
* | Merge remote-tracking branch 'origin/5.8' into devYoann Lopes2017-01-261-16/+94
|\| | | | | | | | | | | | | | | | | Conflicts: .qmake.conf examples/multimediawidgets/videographicsitem/videoplayer.h src/plugins/gstreamer/mediaplayer/qgstreamerplayersession.cpp Change-Id: Id5ce05ffe2cd25657232157b162680b2e24a35ba
| * PulseAudio: make sound effect implementation more robustYoann Lopes2016-12-121-16/+94
| | | | | | | | | | | | | | | | | | | | | | | | - Always lock the pulse thread when modifying variables that are also used in callbacks (prevents concurrent access). - Improved handling of repeated calls to setSource(). - Don't try to write to the device when there is nothing to write. - Stop the Pulse thread when there are no sound effects in use anymore. Task-number: QTBUG-55735 Change-Id: I5e1c6beab89fdbb98707f5fcbb539dddea9a333f Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* | Add missing override and remove redundant virtualAlexander Volkov2016-12-126-67/+67
|/ | | | | Change-Id: Ifd439abf21877adff57080489324bea729ee5279 Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
* Add proper global headers for QtMultimediaLars Knoll2016-11-2313-13/+13
| | | | | | | And deprecate the old qtmultimediadefs.h Change-Id: I2d4164f3a51d8e5d1813413b4f6691a721386fdf Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
* Cleanup all maemo/meego specific codeLars Knoll2016-11-143-76/+0
| | | | | Change-Id: I6c6f28084c6b030928eebc53c5d0009b168ede6a Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
* Move qtmultimedia over to the new config systemLars Knoll2016-11-141-13/+6
| | | | | | | | | | | | Use the new configuration system to define external libraries, configure tests and features. Don't use pkg-config outside of the configuration step. And move all command line options over from qtbase, so that we can remove them from there in a second step. Change-Id: I1aa4b557a6aee17eeceb00602005a2d28b426a26 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
* Merge remote-tracking branch 'origin/5.7' into 5.8Yoann Lopes2016-10-113-7/+5
|\ | | | | | | Change-Id: I8cfa9cb233675bb7ff842118d96ec8ac0b97964f
| * Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-10-043-7/+5
| |\ | | | | | | | | | | | | | | | | | | Conflicts: tests/auto/integration/qaudiooutput/tst_qaudiooutput.cpp Change-Id: I4a30fc030c25e7b8da3eb9f386c4a5fa468df141
| | * Clamp out-of-range volume values in QAudioInput and QAudioOutputYoann Lopes2016-09-282-2/+4
| | | | | | | | | | | | | | | Change-Id: I6da76524533e16f6987fad6029b1f42960972383 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
| | * Clamp volume in QMediaRecorder and QSoundEffectYoann Lopes2016-09-271-5/+1
| | | | | | | | | | | | | | | Change-Id: Ie61c33592873b7e5a2ed1b8ccf3386b20edb2cef Reviewed-by: Christian Stromme <christian.stromme@qt.io>