summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Replace Q_OS_OSX with Q_OS_MACOSTor Arne Vestbø2023-06-074-13/+13
| | | | | | | Change-Id: I23fab7187d527bac1376a32d6b25a4ff01470944 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit 56024013d898696b209ac1c74ec2abe638675446) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix binary compatibility of recently changed screen capture APIArtem Dyomin2023-06-072-10/+10
| | | | | | | | | | | | | | | Enum values be of the same underlining values after removing WindowCaptureNotSupported For QWindowCapture::Error I suggest using the same values to ensure compatibility in the future (if moving the enum out of the classes). See the API comparison review here codereview.qt-project.org/c/qt/qtmultimedia/+/481755 Change-Id: Ia66218ba1a2a719469801cbae683a6093f6b982e Reviewed-by: Lars Knoll <lars@knoll.priv.no> (cherry picked from commit 9cdd69829b38203fd2b4f7cc00824dad8fd4d62b) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix detection of the default audio input on LinuxArtem Dyomin2023-06-071-1/+1
| | | | | | | | | | | For detection of the default audio output audio source name should be taken instead of audio sink name. Task-number: QTBUG-112219 Change-Id: I111de8c5a42de372117a0a5ae9bc7995c9629700 Reviewed-by: Lars Knoll <lars@knoll.priv.no> (cherry picked from commit a33d0422f2d2e1e29c6276ac708fdaf9f7306dc1) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* wasm: fix multimedia devices discoveryLorn Potter2023-06-061-1/+4
| | | | | | | | | | Previously, this assumed user would create a capture session. Fixes: QTBUG-114061 Change-Id: I28aa683618edd3f5f409e52e2a491784f8f5c884 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io> (cherry picked from commit 6a7221f050522e9dd3e0e11826940b50cde36436) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Replace calls to CoTaskMemFree via RAII wrapperPavel Dubsky2023-06-066-57/+137
| | | | | | | | | | | | | This change replaces all uses of task memory object that should be freed with CoTaskMemFree (typically COM-related) with a wrapper class that handles all memory deallocation and provides pointer semantic. Change-Id: I73fe53eaa8ca37eb2ac6c6c05142e10e5a5615e9 Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Lars Knoll <lars@knoll.priv.no> (cherry picked from commit e988214e3e3f0e9f9005b8be1266a60255eef011) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Avoid flooding log during DXGI screen capture error handlingJøger Hansegård2023-06-061-2/+2
| | | | | | | | | | | | | | | | Due to an error handling bug, the DXGI screen capture would flood the log when facing lost duplication interface. This can happen for example when pushing Ctr+Alt+Del while screen capturing is ongoing. This change does not implement recovery after lost duplication interface, but prevents flooding the log by avoiding repeatedly calling IDXGIOutputDuplication::ReleaseFrame Task-number: QTBUG-113460 Change-Id: Iad5761cc4cfe5189460944528b35fd136085631f Reviewed-by: Lars Knoll <lars@knoll.priv.no> (cherry picked from commit 59a50bebb386c83a829ffabd7392c1de2bdb9f5c) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Add missing ScreenCapture to the documented functionality listArtem Dyomin2023-06-021-0/+6
| | | | | | Pick-to: 6.5 Change-Id: I50c7c6b331a9f00bc3777b45bef51ed6fd000889 Reviewed-by: Lars Knoll <lars@knoll.priv.no>
* Docs: Update CameraSession's AudioOutput descriptionBartlomiej Moskal2023-06-021-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Accoring to the QTBUG-109659, documentation should clearly point that setting AudioOutput is used for audio routing. It is already mentioned in: - qml-qtmultimedia-capturesession[0] "Route audio to an output device by assigning an AudioOutput object to the audioOutput property." - qmediacapturesession[1] "A preview of the captured media can be (...) heard by routing the audio to an output device using setAudioOutput()." But there was no mention about it for audioOutput setter. This commit add information about audio routing in audioOutput setter description. [0]https://doc.qt.io/qt-6/qml-qtmultimedia-capturesession.html#details [1]https://doc.qt.io/qt-6/qmediacapturesession.html#details Pick-to: 6.5 6.2 Task-number: QTBUG-109659 Change-Id: I07cd697200d533b649be04a91dd03dca3ac8adc5 Reviewed-by: Nicholas Bennett <nicholas.bennett@qt.io>
* Handle QMediaPlayer outputs corner casesArtem Dyomin2023-06-029-8/+98
| | | | | | | | | | | | | | | | | | | | | - Clean-up the video sink frame after stop, QMediaPlayer deleting, and after setting new media. - ensure no frames lost if change QVideoSink - ensure no frames sent after changing of outputs. The patch fixes problems with tests on Android, summarizing of the related commits: codereview.qt-project.org/c/qt/qtmultimedia/+/472214 codereview.qt-project.org/c/qt/qtmultimedia/+/470890 codereview.qt-project.org/c/qt/qtmultimedia/+/472052 Users want to have flush mode customization as it was it Qt5. It might be added in 6.6 afterwards. Fixes: QTBUG-112173 Task-number: QTBUG-111912 Change-Id: I0e4d34de06fcf23adf8a5736cbff4119478e9baf Reviewed-by: Lars Knoll <lars@knoll.priv.no>
* Add QWindowCapure and QCapturableWindow for window capturingArtem Dyomin2023-06-0217-136/+571
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The design of QMediaCaptureSession already uses different types and setters/gettes for each video source, like QCamera, QImageCapture, and QScreenCapture, so a new source type, QWindowCapure, has been added instead of extending QScreenCapture. For now we only cover the case of capturing windows enumerated though the capturing API itself, via a list of QCapturableWindow instances, as this is considered the primary use-case for such an API. An extension to this would be to add a QWindow overload to either QCapturableWindow's constructor or QWindowCapture::setWindow, to allow capturing of windows in the application itself, either created by Qt, or via QWindow::fromWinId(), but this has been left out for the initial API to keep things minimal. A WId overload has been intentionally left out of this API, as the path for capturing by WId should go via QWindow::fromWinId(). Finally, capture of windows from other applications without enumerating them via QWindowCapure is left out, as adding such an API would require us to build a more generic WId replacement that isn't tied to a single type for each OS, like WId is (it's a NSView* on macOS e.g., but windows can also be represented by CGWindowID). Task-number: QTBUG-103226 Change-Id: I99e3b8bde62250aba35abcedbc8680a299a3cbb2 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Multimedia: Fix compiler warning warning C4723: potential divide by 0Jøger Hansegård2023-06-011-5/+6
| | | | | | | | | | | | cl.exe 19.35.32217.1 for x64 emits warning C4723: potential divide by 0 in RelWithDebInfo build of QtMultimedia.dll. The reason is likely that the compiler can not rule out that the QAudioFormat::bytesPerSample returns a different value from the point of check to the point of read. Pick-to: 6.5 Change-Id: Ifcc2db06310c94a7b90514f54d4d9e9c94c63072 Reviewed-by: Lars Knoll <lars@knoll.priv.no> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
* Clean up pulse audio and fix some threading issuesArtem Dyomin2023-06-016-191/+147
| | | | | | | | | | | | | | | | - improve threading handling, so auto tests flakiness has been fixed. (additional fixes required, namely atomic states comare_exchange) - improve pulse audio operations managing with RAII - remove a hack with a callback based on QObject::destroyed connection, the hack appeared to cause memory leak time to time. - the main logic is not changed The patch has been decoupled from codereview.qt-project.org/c/qt/qtmultimedia/+/474485 Pick-to: 6.5 Change-Id: I68002c243dea874c4300b14b1fbd6b618392ab4f Reviewed-by: Lars Knoll <lars@knoll.priv.no>
* Fix QAudioSink::stateChanged signal emittingArtem Dyomin2023-05-311-1/+6
| | | | | | | | | | | | | | 1. Ensure sending the signal from QAudioSink's thread. 2. QAudioSink backends emit signals from different threads what may cause a case when queued events are outdated and should be filtered. The patch has been decoupled from the big change codereview.qt-project.org/c/qt/qtmultimedia/+/474485 Task-number: QTBUG-113194 Pick-to: 6.5 Change-Id: I68002c243dea814c4309b14b1fbd7b618392ab11 Reviewed-by: Lars Knoll <lars@knoll.priv.no>
* Move the static variable declaration inside a functionAmir Masoud Abdol2023-05-312-4/+4
| | | | | | | | | | | | | In both files, it doesn't look like that we need these variable in more than one functions. So, we can move them in their respective functions. P.S. If not fixed, this breaks the Unity Build since it will result in a duplicate symbol declaration error. Pick-to: 6.5 Change-Id: I2e0babeb2422b3d3e4f953c93fb9c5a5ba11366a Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
* Fix inaccuracy in QAudioSink documentationArtem Dyomin2023-05-301-2/+3
| | | | | | Pick-to: 6.5 Change-Id: I4ae1304615bf8ec55fbe5f41dc280cbc83f1185e Reviewed-by: Lars Knoll <lars@knoll.priv.no>
* Add audio engine warm-up on WindowsPavel Dubsky2023-05-3010-4/+157
| | | | | | | | | | | | | | | | | | | | | | | | Current implementation has the following audio problem on Windows: if any of the classes that support audio playback are used (QMediaPlayer or QSoundEffect) sound is cutting off (part of the sound is missing usually beginning). If there're some other applications playing sounds in the system while we try to play our sound then everyting works fine. Apparently this happens due to warm up delays for system audio engine and if there're other applications available they're simply keeping it alive and it's already fully initialized and ready to be used by us when we need it. As a workaround to this problem an unused audio device is created that is fully initialized and set to play (nothing) but is actually present for any subsequently created audio devices that are ready from the start without any delays. Pick-to: 6.5 Task-number: QTBUG-112512 Change-Id: I660a48e8ac1a1ebd1cfb6a9ff76605c3b4742e17 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Lars Knoll <lars@knoll.priv.no> Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io>
* Release DXGI duplication frame as late as possible to favor performanceJøger Hansegård2023-05-301-9/+16
| | | | | | | | | | | | | | | | | According to Microsoft documentation for the IDXGIOutputDuplication::ReleaseFrame: "For performance reasons, we recommend that you release the frame just before you call the IDXGIOutputDuplication::AcquireNextFrame method to acquire the next frame." This has no measurable impact on GPU usage or performance of the screen capture, but because this design simplifies error handling/cleanup, we can just as well follow the guidelines. Task-number: QTBUG-113460 Pick-to: 6.5 Change-Id: I0f95c5792b29942a957f57971081520501a1e0a5 Reviewed-by: Lars Knoll <lars@knoll.priv.no>
* Make getNextFrame function part of DXGI grabberJøger Hansegård2023-05-301-37/+37
| | | | | | | | | | | | | | Moving the function inside the grabber class will allow us to keep some state around. This will be used for example to improve the grabber performance by avoiding releasing the grabbed frame too frequently. Task-number: QTBUG-113460 Pick-to: 6.5 Change-Id: If883071926b8e7ec9d8a4a156aabcaee8d3370cc Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Lars Knoll <lars@knoll.priv.no>
* Remove std::unary_function usageArtem Dyomin2023-05-301-2/+2
| | | | | | | | | | | std::unary_function was removed with c++17 Pick-to: 6.5 Task-number: QTBUG-113782 Change-Id: I4e330cd1f89dc14936acbccdeee8378ea4938870 Reviewed-by: Lars Knoll <lars@knoll.priv.no> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Pavel Dubsky <pavel.dubsky@qt.io>
* Add missing qml properties to MediaRecorderArtem Dyomin2023-05-262-1/+58
| | | | | | | | | Users asked for videoResolution, but it makes sense to fix all missing ones. Task-number: QTBUG-113621 Change-Id: I8c1314c9e00038cbddb92165b2d0f52d41fbda1a Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Exclude source files from QFFmpegMediaPlugin when building for AndroidAmir Masoud Abdol2023-05-241-0/+5
| | | | | | | | | | | | | Several symbols are redefined in these source files, e.g., AndroidImageFormat, AndroidImage, QtVideoDeviceManager. Excluding two out of three of these files is sufficient for resolving the conflict; however, I have added the third one as well, as a precautionary measure because the names are quite common and may lead to similar issues later. Pick-to: 6.5 Task-number: QTBUG-109394 Change-Id: Ib0d3b0ec41762ab8e391efcbdce5c494ff5b296c Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Android: Camera TorchMode implementation for FFmpeg backendBartlomiej Moskal2023-05-244-0/+82
| | | | | | | | | | | This commit implements the Android camera TorchMode configuration when FFmpeg backend is used. Pick-to: 6.5 Task-number: QTBUG-113154 Change-Id: I34065e0c3830c3bdcd98b652656c8921fb19ff4f Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* Adapt to the RHI API conceptLaszlo Agocs2023-05-2229-72/+32
| | | | | | Task-number: QTBUG-113331 Change-Id: I992f3cbc9e4ceff6e62452bf354e5c46dd8fa84b Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* wasm: fix switching camerasLorn Potter2023-05-231-7/+11
| | | | | | | Pick-to: 6.5 Fixes: QTBUG-113263 Change-Id: If2a740b4224e6f618896f23ce28dc2b02aa2d6d1 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* Fix warning when QT_FFMPEG_HAS_FRAME_DURATION is not setVolker Hilsheimer2023-05-191-0/+1
| | | | | | | | | | | | | Then the frame parameter is unused, which causes build breakage when using -Werror. Use Q_UNUSED to silence that warning. Pick-to: 6.5 Change-Id: I90c75aad0dc17ddd41b622e09ea683a059a55260 Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> Reviewed-by: Pavel Dubsky <pavel.dubsky@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
* Android: Camera zoom implementation with FFmpeg backendBartlomiej Moskal2023-05-194-29/+109
| | | | | | | | | | This commit contains implementation for Camera zoom feature on Android when using FFmpeg-Backend. Pick-to: 6.5 Task-number: QTBUG-105372 Change-Id: I0dbe252e9e87aaa748447956ca094c54660d8459 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* docs: update warning note about QAudioDecoder::setAudioFormat()Nicholas Bennett2023-05-171-1/+2
| | | | | | | Fixes: QTBUG-100514 Pick-to: 6.5 Change-Id: Ib6ccfd13e80e2bc3f6166b3782148a55954f605d Reviewed-by: Nicholas Bennett <nicholas.bennett@qt.io>
* Fix QAudioSink on Windows and make the auto tests passArtem Dyomin2023-05-162-6/+16
| | | | | | | | | | | | | | | | | Windows tests became working, but on CI they are still not available since there're no audio devices on Win CI. - use QPointer for IO device (a corner case for close() in the destructor) - fix the method reset(), it should close the sink and change the state - There's a bunch of futher improvements to be done, namely, stop() should be improved for having more accurate behavior. Pick-to: 6.5 Change-Id: I575a1d97d6d07564164c8b2de91166315d8f28d7 Reviewed-by: Lars Knoll <lars@knoll.priv.no>
* Improve getting ffmpeg frame durationArtem Dyomin2023-05-162-5/+19
| | | | | | | | | | | | | FFmpeg doc says that AVFrame.duration represents the duration except cases if it's 0 (unknown). It's appeared in only 6.0 so we use a helper to get it. So let's apply the rule to our AVFrame wrapper. Pick-to: 6.5 Change-Id: I9596364561f88929796c0097381bfc26bf1d4565 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Lars Knoll <lars@knoll.priv.no>
* Rename file qwindowsiuptr_p.h to qcomptr_p.hJøger Hansegård2023-05-1516-18/+18
| | | | | | | | | | | | For consistency, rename the file that now contains the QComPtr class. We also rename the include guard accordingly. This is a follow-up change after renaming the QWindowsIUPtr class to QComPtr to ensure consistent naming. Task-number: QTBUG-113460 Pick-to: 6.5 Change-Id: I5f234a20faabbe65840a32e93fa039ad48cf06ef Reviewed-by: Lars Knoll <lars@knoll.priv.no>
* Rename QWindowsIUPointer template class to QComPtrJøger Hansegård2023-05-1526-135/+135
| | | | | | | | | | | | | | The name QWindowsIUPointer feels clunky and does not add clarity. On the Windows platform, the term ComPtr, CComPtr or com_ptr is well established and understood. By renaming the QWindowsIUPointer to QComPtr we get code that is easier to read, particularly when the pointer is used in template classes such as std::vector<QComPtr> or QMaybe<QComPtr>. Task-number: QTBUG-113460 Pick-to: 6.5 Change-Id: Ia3ef06c4a1c0e45503ba5204a4d2fd6197114b15 Reviewed-by: Lars Knoll <lars@knoll.priv.no>
* Docs: Add note about YUV420P format with FFMPEG backend on AndroidNicholas Bennett2023-05-151-2/+17
| | | | | | | | | | | Being a generic format, we can receive either a fully planar 4:2:0 - YUV420P or a semiplanar NV12/NV21. That will depend on the codec implemented in the device, so device-dependent. Fixes: QTBUG-112454 Pick-to: 6.5 6.5.1 Change-Id: Iebebca8d3d2bb5b540f92ec87b536dcb49ec7e4f Reviewed-by: Mats Honkamaa <mats.honkamaa@qt.io>
* Android-backend: Fix for Captured Image rotationBartlomiej Moskal2023-05-122-70/+16
| | | | | | | | | | | | | | | | | | | | | | | | | When using android-camera backend, the result photo was not correctly rotated for landscape orientation. Preview rotation is handled by [0]setDisplayOrientation method, but it does not affect taking pictures and recording. Recording is handled by [1]setOrientationHint. Both mentioned methods use QAndroidCameraSession::currentCameraRotation for rotate correction. It is reasonable to handle photo rotation in the same way. This commit removes a special rotation handling from onPictureTaken java method and move it to QAndroidCameraSession. That allows to handle photo rotation in the same way as preview rotation and recording rotation. https://developer.android.com/reference/android/hardware/Camera#setDisplayOrientation(int) https://developer.android.com/reference/android/media/MediaRecorder#setOrientationHint(int) Fixes: QTBUG-113029 Pick-to: 6.5 6.2 Change-Id: I2d08fef43fbd78faeafc7e20e100329e75019679 Reviewed-by: Lars Knoll <lars@knoll.priv.no>
* Remove not actual resampler's settingArtem Dyomin2023-05-111-2/+0
| | | | | | | | | | | The "async" option was relevant for the old implementation, but now it just makes problems, namely, by making internal buffering too high, and the actual output size could be very different with the expected one, what can cause a weird behavior. Pick-to: 6.5 Change-Id: I4637d02e7f5e321fb3f674a386ef43667ed9cda9 Reviewed-by: Lars Knoll <lars@knoll.priv.no>
* Implement QFFmpegScreenCaptureDxgi in terms of common FFMPeg base classJøger Hansegård2023-05-113-125/+67
| | | | | | | | | | | | | | | | | | | | | | | | The QtMultimedia FFMpeg screen capture plugins all share a common base class 'QFFMpegScreenCaptureBase' that implements the bulk of the screen capture functionality, including the grabber thread and its screen capture loop. The Windows screen capture class 'QFFMpegScreenCaptureDXGI' class is, on the other hand, having its own implementation which makes it look and behave differently from the other implementations. This change refactors the Windows DXGI screen capture class to share base class with the other platform implementations. This reduces code duplication, and makes the class easier to maintain because it follows the same pattern as the other screen capture implementations. No functionality is changed through this refactoring. Task-number: QTBUG-113460 Pick-to: 6.5 Change-Id: Idd157c96e1705a9fe6eb591920177f6afb88cd2a Reviewed-by: Lars Knoll <lars@knoll.priv.no> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
* Android-backend: fix for setting maximumZoomFactorBartlomiej Moskal2023-05-112-5/+2
| | | | | | | | | | | | | | | Before this commit, the maximum zoom factor was set locally in the QAndroidCamera class. It was not propagated to its base QPlatformCamera class. That cause the problem with wrong value returned by maxZoomFactor() method. This commit contains setting correctly m_maxZoom in QPlatformCamera and remove not needed m_maximumZoom member from QAndroidCamera. Fixes: QTBUG-105372 Pick-to: 6.5 6.2 Change-Id: Iaf167d03e42cb0e22ebe60862bb9dc24b1ef9173 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* Remove screen capture dependency on DirectX debug layerJøger Hansegård2023-05-092-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When creating a Direct3D 11 device, it is possible to enable additional debug logging from the Direct3D subsystem by passing the D3D11_CREATE_DEVICE_DEBUG flag to the D3D11CreateDevice function. This is useful for debugging, but requires the D3D11SDKLayers.dll debug layer to be installed on the target machine. If the debug layer is not installed, calls to D3D11CreateDevice fails with the DXGI_ERROR_SDK_COMPONENT_MISSING status code. The debug layer is not installed by default on Windows 10 or Windows 11, and we can therefore not expect that this layer is available on any Windows computer. We also see that some QtMultimedia tests fail on CI nodes because the debug layer is not present. This change fixes the problem by removing the D3D11_CREATE_DEVICE_DEBUG flag from calls to D3D11CreateDevice. This gives less diagnostics for developers, but full debug logging can still be enabled through the DirectX control panel, which can be used to forcefully enable the debug layer even if the flag is not present when creating the device. An alternative solution would be to first try to create the device with the debug layer enabled by passing the D3D11_CREATE_DEVICE_DEBUG flag, and then retry without this flag if creating the device failed. The drawback of this approach is that the performance of the screen capture feature may depend on if the debug layer is installed or not. Pick-to: 6.5 Change-Id: Icad2965b61de953e3f93c8aeb902f37e5b31c10a Reviewed-by: Lars Knoll <lars@knoll.priv.no>
* wasm: use javascripts VideoFrame for video processingLorn Potter2023-05-063-13/+174
| | | | | | | | | | | | | | This does not require any canvas context, so it should work for either 2d or webgl canvas Of course, not supported on Firefox yet This makes video playing use less memory on Safari and Chrome and less processor on Chrome. Change-Id: I4f3f320c12e3aa49d7d4e3a742fbd69900b539fc Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
* Reduce choppy sound on audio playback if audio sink is almost emptyArtem Dyomin2023-05-056-7/+84
| | | | | | | | | | | | | | If audio sink buffer is almost empty, that happens on pause/play, the sound pretty often has little gaps. The solution is using some little samples compensation (slows down the playback on 1% for 1-2sec what allows to increase buffer loadig from 0-10% to 20%). In other words, the patch implements slight "soft" audio samples compensation in order to avoid having empty adio sink buffer. Pick-to: 6.5 Change-Id: I6b963996eab8f8b8f610fcd4a566405aec3d13cf Reviewed-by: Lars Knoll <lars@knoll.priv.no>
* pffft: Fix invalid format in qt_attribution.jsonTopi Reinio2023-05-051-1/+1
| | | | | Change-Id: Ieb948fd0eff8f10af10aab20268961e9b41de18c Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
* wasm: fix local video file playingLorn Potter2023-05-052-27/+41
| | | | | | Pick-to: 6.5 Change-Id: I8edd18d78815795262a5bca5523fe82587dd469f Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
* QMediaPlayer: emit errorChanged signal whenever the error has changedVladimir Belyavsky2023-05-043-9/+12
| | | | | | | | | | | | | | | | | There was a problem that error/errorString properties were not properly notified when reseted on start playing. So now we use private setError() method whenever 'error' should be changed. Also as a drive-by there are several improvements: - errorChanged signal will be emitted now only when the property's value was actually changed. - errorOccured signal is now emitted only when there is a real error, i.e. it will never be emitted with NoError. Fixes: QTBUG-113386 Pick-to: 6.5 Change-Id: I16e26710941ed6b8429f39c201572092f2714c74 Reviewed-by: Lars Knoll <lars@knoll.priv.no>
* Upgrade pffft to the latest versionLars Knoll2023-05-042-4/+3
| | | | | | | | Pick-to: 6.5 6.5.1 Fixes: QTBUG-113355 Change-Id: Ib7f7c45fe89f6516d136406eb068ea740cff11fe Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Android: Use QFile for content urlSamuel Mira2023-05-021-14/+5
| | | | | | | | | | | | | Following Scoped Storage feature implementation, the java APIs to obtain a filedescriptor from a content scheme were removed. QFile now supports content url, so it was changed to use that. The QFile still needs to be used as a stream. Fixes: QTBUG-112973 Pick-to: 6.5 6.2 Change-Id: I0b023be6adab81a591ce0e8a81128e4ca00ba213 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Lars Knoll <lars@knoll.priv.no>
* AVFVideoSink: Set pixel format even when rhi is not setVladimir Belyavsky2023-05-011-24/+22
| | | | | | | | | | | | QVideoSink::setRhi() is new and not documented. One may still use default constructed QVideoSink as an output for QMediaPlayer. In this case we still need be able produce valid video frames into the sink. Amends 2e43d29e1d5d50b44b8f6d4f000968e3933c279a. Fixes: QTBUG-113286 Pick-to: 6.5 Change-Id: Ib4632e66e8df78af44178af611604aac5e797b53 Reviewed-by: Lars Knoll <lars@knoll.priv.no>
* Docs: Fix "Can't link to" example warningsSafiyyah Moosa2023-04-281-3/+3
| | | | | | | Task-number: QTBUG-113160 Pick-to: 6.5 Change-Id: I0187a0f9ab419694b6e801d1f44cbb59394ec7c7 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Fix unused variable warnings with Android NDK 25Ville Voutilainen2023-04-263-4/+1
| | | | | | Pick-to: 6.5 Change-Id: I3393a873ac1a5bf5d2c289c54e5fa83941725fb8 Reviewed-by: Lars Knoll <lars@knoll.priv.no>
* AVFVideo: Set color range to video frame formatDoris Verria2023-04-261-0/+18
| | | | | | | | | | Set the color range based on the pixel format. This ensures the correct color matrix is chosen. Task-number: QTBUG-108083 Pick-to: 6.5 Change-Id: I6b599d702384f479d8efee0673fe3eadcf9c12c2 Reviewed-by: Lars Knoll <lars@knoll.priv.no>
* Fix QMediaDevices::videoInputs returning an empty listPavel Dubsky2023-04-261-0/+4
| | | | | | | | | | | | | When QMediaDevices::videoInputs is called without prior call to QMediaDevices::audioOutputs the returned list is empty but if the latter call is present everything works as it should. The reason is a missing call to CoInitialize inside internal Windows-specific implementation. Task-number: QTBUG-112702 Pick-to: 6.5 Change-Id: I462d3cf15f65329415539eb1bdde6be65ab9a407 Reviewed-by: Lars Knoll <lars@knoll.priv.no>
* QVideoTextureHelper: Fix color matrix calculationDoris Verria2023-04-261-1/+1
| | | | | | | | | | | | | | | | | | | The color matrix for BT709 video (limited) range, had a small mistake. From calculations based on the BT709 standard and for video range (16 - 235) values, the conversion equations are: R = Y * 1.1644 + V * 1.7928 + (-248.100994) G = Y * 1.1644 + U * -0.2132 + V * -0.5329 + 76.878080 B = Y * 1.1644 + U * 2.1124 + (-289.017566) So there was a missplacement between two of the coeficients in the matrix. Fixes: QTBUG-108083 Pick-to: 6.5 6.2 Change-Id: If58c7df8a9ad4d975a2ac0c90cd3692232210995 Reviewed-by: Lars Knoll <lars@knoll.priv.no>