summaryrefslogtreecommitdiffstats
path: root/src/plugins/windowsaudio
Commit message (Collapse)AuthorAgeFilesLines
* Convert uses of QTime as a timer to QElapsedTimerEdward Welbourne2019-06-134-6/+8
| | | | | | | | It was deprecated by qtbase/ed99a591a83a399458f12341d0a1c0b3152f247a. Change-Id: I87bf219c05a62e1deeb9d3df558e5084318a2a69 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
* Only call CoUnitialize() if calling CoInitialize() was necessaryAndy Shaw2019-05-211-2/+3
| | | | | | | | | | | As CoInitialize() may have been called by something else beforehand then it should only call CoUnitialize() if it returns S_OK which indicates it was not already called. That ensures it is only uninitalized if it did the initialization. Change-Id: I1b723e0b69fe5f9ff7c2c6ef083e9196f21812b2 Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
* QWindowsAudioInput: Set volume only if it has been requestedVal Doroshchuk2019-04-081-3/+3
| | | | | | | | | | | Currently if the device gets opened, also its volume is set to 100%. The volume should be set only if it has been requested. Change-Id: I9dc4ab29ad71f3ac6556c6dd32c7b8e5d69efab2 Fixes: QTBUG-75024 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
* WindowsAudioOutput: Introduce QT_WAVE_BUFFERS env varv5.12.0-beta3Val Doroshchuk2018-10-182-12/+22
| | | | | | | | | | | | | | | | | | Currently by default 5 wave buffers are created where each buffer contains buffer_size/5 bytes. If total buffer size is small enough, playing of these wave buffers might be finished before refilling them. Which leads crackling and another noise. Introduced QT_WAVE_BUFFERS env var which contains number of wave buffers. Must not be less than 5. If number of wave buffers is big enough, it ensures that there is always data to play. Task-number: QTBUG-45174 Change-Id: I66bf997411f858fbff822394bb748dea2086060e Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-05-123-15/+15
|\ | | | | | | Change-Id: If607130a5ae7aaad3bd6323c2ba2beabaee4e096
| * Fix adjusting volume for default deviceVal Doroshchuk2018-05-082-15/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Using WAVE_MAPPER device id (which points to default device) is not possible to get and initialize a mixer object to set volume. Function mixerGetID() does not support WAVE_MAPPER as a device id yet. Since we do not know device number anymore needs to call waveInOpen() first and after that initialize mixer controls using hWaveIn handler. - Fixed default volume from 0.0f -> 1.0f. - Before QWindowsAudioInput::start() is called, use cached volume. - After QWindowsAudioInput::start(), mixer controls are initialized. - QWindowsAudioInput::stop() deinitializes mixer controls. Task-number: QTBUG-61920 Change-Id: I5a94dad282618fb4a2e0f75c34008ca002bd1aeb Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
| * DirectShow: Fix crackling when playing custom sample rateVal Doroshchuk2018-05-081-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | Seems waveOutWrite() requires WAVEHDR->dwBufferLength to be even number otherwise some crackling might be heard while playing. And looks like it is not related to QAudioFormat, any of it produces the issue. Task-number: QTBUG-64931 Change-Id: I87dbe165611325d9c0291a3bffdc091397b42741 Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
* | Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-04-211-2/+3
|\| | | | | | | Change-Id: I7f644741677dbd848d480dde7c76cdf7ad81e4b9
| * Windows Audio: Fix Clang warnings about int/C-style castsFriedemann Kleint2018-04-161-2/+3
| | | | | | | | | | | | | | | | | | For 64bit: qwindowsaudioinput.cpp(420,15): warning: cast to 'HMIXEROBJ__ *' from smaller integer type 'UINT' (aka 'unsigned int') [-Wint-to-pointer-cast] mixerID = (HMIXEROBJ)mixerIntID; Change-Id: Icb13142b0d8868e995f47caa02784c260abfc10f Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* | WindowsAudio: Pause playback before resetVal Doroshchuk2018-02-222-4/+13
|/ | | | | | | | | | | | When some data has been written to play and waveOutReset is called some crackling could be heard at the end of playback. Proposed a fix to pause playback and wait for time of buffers pushed to play. Task-number: QTBUG-63492 Change-Id: Ieb72c0657eee3dd92a947999d70f366e2bd7f102 Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io> Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Merge remote-tracking branch 'origin/5.10' into devLiang Qi2018-01-062-11/+3
|\ | | | | | | | | | | | | Conflicts: .qmake.conf Change-Id: I5acdc7e0bd3729b80522dfff0f388cf2507fb111
| * Merge remote-tracking branch 'origin/5.9' into 5.10Liang Qi2018-01-062-11/+3
| |\ | | | | | | | | | | | | | | | | | | Conflicts: .qmake.conf Change-Id: I3d6e69f3f99b2f0a0e2c29ffdd02176e1f22304e
| | * Fix crash when no supported formats are returnedVal Doroshchuk2017-11-231-8/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | If waveInGetDevCaps or waveOutGetDevCaps returns MMSYSERR_NOERROR it does not mean that there are supported formats in the dwFormats field. Task-number: QTBUG-54242 Change-Id: I767ccc9570681685a27abd979ba9754034058e6f Reviewed-by: Christian Stromme <christian.stromme@qt.io>
| | * WindowsAudio: Remove unneeded Sleep() when stopping playbackVal Doroshchuk2017-11-231-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | To terminate playback waveOutReset is already used. Task-number: QTBUG-35916 Change-Id: I50d6c25c944b01d7dfe62b2f80ec153231818a33 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* | | Merge remote-tracking branch 'origin/5.10' into devLiang Qi2017-11-201-3/+0
|\| | | | | | | | | | | Change-Id: Icaf645e271b21320c4cb6269178d9e722092a263
| * | Fix Clang warnings about unused fieldsFriedemann Kleint2017-11-021-3/+0
| |/ | | | | | | | | | | | | | | | | | | evrcustompresenter.h(371,16): warning: private field 'm_sampleToPresent' is not used [-Wunused-private-field] qwindowsaudiooutput.h(119,10): warning: private field 'resuming' is not used [-Wunused-private-field] qwindowsaudiooutput.h(142,14): warning: private field 'result' is not used [-Wunused-private-field] ^ qwindowsaudiooutput.h(143,13): warning: private field 'header' is not used [-Wunused-private-field] Change-Id: Iaf9e422678e6e53aeb3a0c0f7c1c52c1301a0b9d Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* / Replace Q_DECL_OVERRIDE with overrideKevin Funk2017-09-221-5/+5
|/ | | | | Change-Id: I17b3650a3df5688274151c1f2c4629e4a5062028 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Merge remote-tracking branch 'origin/5.7' into 5.8Liang Qi2016-11-111-13/+10
|\ | | | | | | | | | | | | | | | | | | Conflicts: qtmultimedia.pro src/multimedia/playback/qmediaplayer.cpp src/plugins/directshow/directshow.pro tests/auto/integration/qmediaplayerbackend/BLACKLIST Change-Id: I6dacdcbb223c1d12dd72eb308a67170983c709b3
| * Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-11-041-13/+10
| |\ | | | | | | | | | Change-Id: Ib038c5e3ebb48c0e46569a35d530fa5ceaf06a32
| | * WindowsAudio: fix volume when using multiple QAudioOutputsYoann Lopes2016-11-021-13/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We were using Windows' waveOutSetVolume() function to set the volume on an audio stream. That function applies the volume on the sound device and not on a particular stream, meaning all QAudioOutputs and QSoundEffects were sharing the same volume. All Qt audio streams are supposed to have their volume controllable separately; in order to respect that, we now apply the volume ourselves on the data before writing it to the device. Task-number: QTBUG-43765 Task-number: QTBUG-48049 Change-Id: I407588ca40cf4216454431fe3e6ce4d8740f391d Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* | | Improve QAudioDeviceInfo::defaultDevice().Christian Stromme2016-05-204-15/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The previous implementation of QAudioDeviceInfo::defaultXDevice() would always report the first available device as the "default" one, making the order, in which devices were listed, a hidden requirement when implementing audio plugins. To make it easier and more reliable to retrieve the default device, all new plugins should implement the new QAudioSystemPluginExtension interface as well as the QAudioSystemPlugin. Devices will be chosen in the following order (first match wins): default plugin -> default device -> first available device plugins -> default device -> first available device Task-number: QTBUG-51292 Change-Id: I8ace78858976fe7c60a2c4a117ef15c4e1bb177f Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
* | | Remove Windows CE.Friedemann Kleint2016-04-282-32/+1
|/ / | | | | | | | | | | | | | | Remove #ifdef sections for Q_OS_WINCE and wince .pro file clauses. Task-number: QTBUG-51673 Change-Id: I07ea3a9522d5b6bd8cce6f5256d92e65a699e3f5 Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
* | Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-03-071-4/+4
|\| | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/avfoundation/mediaplayer/mediaplayer.pro tests/auto/unit/qmediaserviceprovider/mockserviceplugin1/mockserviceplugin1.pro tests/auto/unit/qmediaserviceprovider/mockserviceplugin2/mockserviceplugin2.pro tests/auto/unit/qmediaserviceprovider/mockserviceplugin3/mockserviceplugin3.pro tests/auto/unit/qmediaserviceprovider/mockserviceplugin4/mockserviceplugin4.pro tests/auto/unit/qmediaserviceprovider/mockserviceplugin5/mockserviceplugin5.pro Change-Id: I5742596230dc510ba2a09eba624429bb67179194
| * consistently put {qt,qml}_{module,plugin} at the end of project filesOswald Buddenhagen2016-02-251-4/+4
| | | | | | | | | | | | | | | | this fixes static builds by ensuring that all dependencies are exported. Task-number: QTBUG-51071 Change-Id: I8e1554b648327ea2fb342b882ce8e439bd6f271d Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
* | Merge remote-tracking branch 'origin/5.6' into devLiang Qi2016-01-262-3/+3
|\| | | | | | | Change-Id: I2e4e9cca01d63ed0d1e7f71c7a58322390696036
| * WindowsAudio: fix QAudioOutput state after resume().Yoann Lopes2016-01-191-1/+1
| | | | | | | | | | | | | | | | | | In push mode, the state must be IdleState after resume(), and only change to ActiveState once it receives some data. Task-number: QTBUG-50390 Change-Id: I0e12f4eaff350b9423e44779f229e0e1061cf576 Reviewed-by: Pasi Petäjäjärvi <pasi.petajajarvi@theqtcompany.com>
| * Fix usage of QMutexLocker, destroy it only at end of scopeSergio Martins2016-01-122-2/+2
| | | | | | | | | | | | Change-Id: I8b47d49f7a83a71a1b90ab57ee7bc3791ef59667 Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
* | Updated license headersAntti Kokko2016-01-1910-140/+200
| | | | | | | | | | | | | | | | | | | | | | From Qt 5.7 -> LGPL v2.1 isn't an option anymore, see http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/ Updated license headers to use new LGPL header instead of LGPL21 one (in those files which will be under LGPL v3) Change-Id: I324f65c61171f36641472964d095d72e452afb3a Reviewed-by: Jani Heikkinen <jani.heikkinen@theqtcompany.com> Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* | WinRT, WindowsAudio plugins: replace foreach with range-based forAnton Kudryavtsev2016-01-151-4/+4
|/ | | | | Change-Id: I37ab3239aeaa01ecd033bfe7d9c8885511844d4d Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
* WindowsAudio: Fix compiler warnings by g++/MinGW.Friedemann Kleint2015-07-131-2/+2
| | | | | | | | | | | | | | | Replace NULL by 0 for parameters of type DWORD_PTR. qwindowsaudiodeviceinfo.cpp: In member function 'bool QWindowsAudioDeviceInfo::testSettings(const QAudioFormat&) const': qwindowsaudiodeviceinfo.cpp:220:50: warning: passing NULL to non-pointer argument 4 of 'MMRESULT waveOutOpen(LPHWAVEOUT, UINT, LPCWAVEFORMATEX, DWORD_PTR, DWORD_PTR, DWORD)' [-Wconversion-null] WAVE_FORMAT_QUERY) == MMSYSERR_NOERROR); ^ qwindowsaudiodeviceinfo.cpp:220:50: warning: passing NULL to non-pointer argument 5 of 'MMRESULT waveOutOpen(LPHWAVEOUT, UINT, LPCWAVEFORMATEX, DWORD_PTR, DWORD_PTR, DWORD)' [-Wconversion-null] qwindowsaudiodeviceinfo.cpp:223:50: warning: passing NULL to non-pointer argument 4 of 'MMRESULT waveInOpen(LPHWAVEIN, UINT, LPCWAVEFORMATEX, DWORD_PTR, DWORD_PTR, DWORD)' [-Wconversion-null] WAVE_FORMAT_QUERY) == MMSYSERR_NOERROR); ^ qwindowsaudiodeviceinfo.cpp:223:50: warning: passing NULL to non-pointer argument 5 of 'MMRESULT waveInOpen(LPHWAVEIN, UINT, LPCWAVEFORMATEX, DWORD_PTR, DWORD_PTR, DWORD)' [-Wconversion-null]# ==[ Please wrap at 72 characters ]===================================| Change-Id: Ie8f65e0e1f4f1274a1b634f3701ae0103e716d97 Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
* Update copyright headersLiang Qi2015-04-152-14/+14
| | | | | | | Just do bbfccc713546f9e7341fbe1af7482cafbdc4ea25 for new added files. Change-Id: Ibbcd515d5e7577a8a3b33163094f9153072c8846 Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
* Merge remote-tracking branch 'origin/5.4' into 5.5Liang Qi2015-04-159-246/+293
|\ | | | | | | | | | | | | | | Conflicts: src/multimedia/playback/playlistfileparser.cpp src/plugins/windowsaudio/qwindowsaudiodeviceinfo.cpp Change-Id: I52950def2b8283ae15797d05d4ead6a1256eba19
| * WindowsAudio: improve supported formats detection.Yoann Lopes2015-04-149-247/+293
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QAudioDeviceInfo::isFormatSupported() now tries to open the device with that format to theck if it is supported. We were before simply checking that its parameters were included in the list of supported values, which might be incomplete. In addition, since the Windows API to check device capabilities is quite limited, we now test additional common formats and add them to the supported formats if the device can open them. Task-number: QTBUG-42648 Change-Id: Idd0affbd6d91d4fd027a6a4c86c2f3fe008a118f Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
* | Merge remote-tracking branch 'origin/5.4' into devFrederik Gladhorn2015-02-132-1/+3
|\| | | | | | | Change-Id: I5575a4ba13212c9bfe73a3de3ef17c6528beafc3
| * Fix some typosSergio Ahumada2015-02-111-1/+1
| | | | | | | | | | Change-Id: Iaf8f50741d3103480668b4a654a202d8a363bc45 Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
| * Fix memory leak in QWindowsAudioDeviceInfo::availableDevices().Friedemann Kleint2015-02-051-0/+2
| | | | | | | | | | | | Task-number: QTBUG-44305 Change-Id: I8c5afd6d5c77ef1ef81c3b752c6246dc50406794 Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
* | Update copyright headersAntti Kokko2015-02-128-56/+56
| | | | | | | | | | | | | | | | | | Qt copyrights are now in The Qt Company, so we could update the source code headers accordingly. In the same go we should also fix the links to point to qt.io. Change-Id: I1c6faa4f59f8eca54f01ef20941fa60161dd7872 Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
* | Add missing includes for QDataStream/QIODevice.Friedemann Kleint2015-01-073-0/+4
|/ | | | | | | | After qtbase/90e7cc172a7521396bb2d49720ee4ceb9a9390b3, QStringList no longer includes QDataStream. Change-Id: Ibe3e1e6542e1b592adaabe3f8ffd3268efaf289b Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Merge remote-tracking branch 'origin/5.3' into 5.4Sergio Ahumada2014-09-262-2/+2
|\ | | | | | | | | | | | | Conflicts: .qmake.conf Change-Id: Iad73368a22c6d4662188e6f357a265d0c26756d0
| * Fix integer overflow in several audio plugins.Yoann Lopes2014-09-092-2/+2
| | | | | | | | | | | | Task-number: QTBUG-40804 Change-Id: If006cb7db319bb6fda4ce7eb4f907e897b5d9efa Reviewed-by: Christian Stromme <christian.stromme@digia.com>
* | Merge remote-tracking branch 'origin/5.3' into 5.4Frederik Gladhorn2014-09-012-1/+32
|\| | | | | | | | | | | | | | | | | Conflicts: src/gsttools/qgstreamervideoinputdevicecontrol.cpp src/plugins/gstreamer/camerabin/camerabinserviceplugin.cpp src/plugins/gstreamer/mediacapture/qgstreamercaptureserviceplugin.cpp Change-Id: Ic854589562d2deeaa0ebf75840cb8a2ee32e99de
| * Restore QWindowsAudio support on wince.Bjoern Breitmeyer2014-08-272-1/+32
| | | | | | | | | | | | | | Enabled Audio playback with wave device on WindowsCE again. Change-Id: Ic7749821ef8f991a909cbeb29083219ea988f5dc Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
* | Update license headers and add new license filesAntti Kokko2014-08-248-152/+88
|/ | | | | | | | | - Renamed LICENSE.LGPL to LICENSE.LGPLv21 - Added LICENSE.LGPLv3 & LICENSE.GPLv2 - Removed LICENSE.GPL Change-Id: Ied06887225df341064c12bcc14c259ae74116f2e Reviewed-by: Jani Heikkinen <jani.heikkinen@digia.com>
* Move win32 and Alsa audio backends into plugins.Christian Strømme2014-01-3010-0/+2635
Change-Id: I9835cf5ee97900569f26421a19543b485e933051 Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>