summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Update dependencies on '6.6.3' in qt/qtmultimediav6.6.36.6.3Qt Submodule Update Bot2024-03-191-4/+4
| | | | | Change-Id: I27b122614520593507f225a1c06c86f5e4760331 Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* Update src/3rdparty/ffmpeg/qt_attribution.jsonJani Heikkinen2024-03-181-2/+2
| | | | | | | | 8301dde957880035f49e9e7cb47c21d8b7bd1605 updated ffmpeg from v6.1 to v6.1.1 so add that in the ffmpeg/qt_attribution.json as well Change-Id: I22b666a40f6d69e38d093d7d74bd556a02d160ab Reviewed-by: Antti Kokko <antti.kokko@qt.io>
* Update dependencies on '6.6.3' in qt/qtmultimediaQt Submodule Update Bot2024-03-151-2/+2
| | | | | Change-Id: I039a3d54a96ea61fbd0b3d9969cabbf0e1ef7670 Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* Update dependencies on '6.6.3' in qt/qtmultimediaQt Submodule Update Bot2024-03-111-4/+4
| | | | | Change-Id: I5cef5c11852e18af604a6e3bd995093897624750 Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* Add tests that verify backend availability in QtMultimediaJøger Hansegård2024-03-105-16/+88
| | | | | | | | | | | | | | This test verifies that the expected media backends are available on all platforms. Task-number: QTBUG-122976 Pick-to: 6.5 Change-Id: Ie21cf933fedaedfb3c06f0980fb13d47729ed69c Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> (cherry picked from commit 77a026fa418aa6236a466a93e652f2ab6494e50c) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit bc0168f55fe44cf855b266326d6ef7574da7cef7)
* GStreamer: perform rate changes immediatelyTim Blechmann2024-03-091-2/+14
| | | | | | | | | | | | | | When changing the playback rate, we can do this immediately by going via `GST_SEEK_FLAG_INSTANT_RATE_CHANGE` Task-number: QTBUG-87969 Pick-to: 6.5 Change-Id: I5e130b506cc0f54673faecdeb45ed92086a3d057 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> (cherry picked from commit 554a73e004c7b0159e39e14e2241e1ff614f32f1) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit d930927d86d1fc949c23fef6f1d6255f6f505a4a)
* Fix naming of members in QFFmpegVideoBufferArtem Dyomin2024-03-082-44/+44
| | | | | | | | | | Pick-to: 6.5 Change-Id: I73a3312d60b0ef6a30b90344d13e3a5ed8d490fc Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit 024bafe4a13a44b172304d2ba71c35596d03997b) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 8eb764291bb6187f30bc9ccc054000e9e6f18a9b)
* Simplify lifetime management of QPlatformAudioResamplerJøger Hansegård2024-03-085-15/+21
| | | | | | | | | | | | | | | | | | | | | QPlatformMediaIntegration creates various objects, and return them as QMaybe<Type*>. This moves responsibility of ownership to the caller. This patch makes the createAudioResampler function return the resampler as QMaybe<std::unique_ptr<Type>> which simplifies lifetime management. This introduces an asymmetry with other factory functions, but this is a step in the right direction Pick-to: 6.5 Change-Id: Id2f67597c8d8271b184321d138e126edff5f3202 Reviewed-by: Tim Blechmann <tim@klingt.org> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Lars Sutterud <lars.sutterud@qt.io> Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> (cherry picked from commit 32f6952b03ba0e550db3e9dc358c366bf52c54a9) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 0d2f051469ccabc3a9dab7d5aae9658f33525aaf)
* Move the logic of format context for encoding to a separate fileArtem Dyomin2024-03-085-21/+125
| | | | | | | | | | | | | | | | | | It gives us advantages - clean up the Encoder class - follow RAII idiom - opportunity to extend EncodingFormatContext without affecting Encoder - prepare for adding QIODevieOutput Task-number: QTBUG-121827 Pick-to: 6.5 Change-Id: I4262bcdbfb549b0fb8569985d428abb80ce187bc Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit c6a6aea395b14f13409a4bf15a5f865edf035cf5) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit b2af18ecfaf45c0430c09046d595ace447d541dc)
* Move FFmpeg io device helpers to a separate fileArtem Dyomin2024-03-084-30/+78
| | | | | | | | | | | | | | The helpers are to be reused in the media recording, so they should be in a separate file. Task-number: QTBUG-121827 Pick-to: 6.5 Change-Id: I3436a1a297f94deeb5a760ef6c10e26e03d03bed Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Tim Blechmann <tim@klingt.org> (cherry picked from commit 6cc59580b31f000e7aa1681c02245d567de3e520) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 6ca1ebae7555ff5996602725b39c8458d0a1bed4)
* FFmpeg Encoder: Do not proceed if AVIOContext is not setBartlomiej Moskal2024-03-081-0/+7
| | | | | | | | | | | | | | | | | | | According [0]documentation, when passing AVFormatContext to avformat_write_header function, "Its pb field must be set to an already opened AVIOContext". It seems that if pb is not set, calling avformat_write_header will casue the application crash. That is why we should not proceed if AVIOContext is not set. [0]https://ffmpeg.org/doxygen/5.0/group__lavf__encoding.html#ga18b7b10bb5b94c4842de18166bc677cb Task-number: QTBUG-122224 Pick-to: 6.5 Change-Id: I7d3ca40459bf8e77cf664d3b20f0c124a6283a06 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit 21e5466a9f45cb0b9c6358ead6337fcc18ee3291) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit c33e6f69b0ebe8c1f66bf454150273380fd96aaa)
* GStreamer: media capture - only capture active camerasTim Blechmann2024-03-082-20/+38
| | | | | | | | | | | | | | | | | `Camera::setActive` did not have any effect, as the camera was always active. So we hook into the `QGstreamerCamera::activeChanged` signal in order to activate the camera in QGstreamerMediaCapture. Fixes: QTBUG-122959 Pick-to: 6.5 Change-Id: Ifce4c59f58eb074e285ee9dfc012ac8fd8637a1f Reviewed-by: Mikko Hallamaa <mikko.hallamaa@qt.io> Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit b6f02dff45941494f981ae72b6981549d17b4c8b) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit a04b5d8e94f478b3643986b18792f99fe7cac420)
* GStreamer: introduce GList range adaptorTim Blechmann2024-03-084-40/+111
| | | | | | | | | | | Remove boilerplate code when iterating GLists. Pick-to: 6.5 Change-Id: I66603585e51b27f2302d83a08e03ba104871232a Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit 40bb9be18b0e249dee430eb72539309331fb35f0) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 1ef7349ccefa27e68b5e18322872e38c9c4b0eb6)
* GStreamer: video sink - remove `identity` node from pipelineTim Blechmann2024-03-081-10/+12
| | | | | | | | | | | | | | | | | | The `identity` node was added if no hardware-specific conversion helpers were used on the specific platform. We can simplify the pipeline by simply linking queue and capsfilter directly. This allows us to use instant rate changes, since `identity` apparently doesn't support instant rate changes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1393 Pick-to: 6.5 Change-Id: I06752492dd4fd718cbe8a6e802464fbffd5a55d7 Reviewed-by: Mikko Hallamaa <mikko.hallamaa@qt.io> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit ed022e9a9d74bf6746cdfc62e8bf7b781f6cea92) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 2ac47843e8029fcda59e051b54d89202a4cf7b17)
* GStreamer: use more expressive queue namesTim Blechmann2024-03-072-2/+2
| | | | | | | | | | | This helps debugging, as queue names are setting the thread names. Pick-to: 6.5 Change-Id: Id61f3a7f34ac0c7b18a5d4d250b568a620e5b201 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit 04b8f1aa08b09b9eea82d00c23225fb3d974e81e) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit d2e9514b99770882be37b7535ce535798ae2a774)
* CMake: Use qt_internal_add_example for spatialaudioAlexandru Croitor2024-03-071-1/+1
| | | | | | | | | | | | | spatialaudio is the actual project, not a subdirectory with separate examples. It should use qt_internal_add_example. Task-number: QTBUG-90820 Task-number: QTBUG-123096 Change-Id: I874a69f748685f4b28f03310bb51f420cd251a94 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> (cherry picked from commit 4a45c5f2e15d1639d286b2fe8c9aca4bfdb5c2ee) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 17fbd90a5dbdb3d2471087788b5b25d8fe809772)
* QMediaStorageLocation: Use QUrl in generateFileName functionBartlomiej Moskal2024-03-071-1/+2
| | | | | | | | | | | | | | | | | | | | | | | [0]QFileInfo has limitations on Android content URIs. In particular, the isRelative() method does not work properly. From the other hand, [1]isRelative() from QUrl is equivalent to calling scheme().isEmpty(). Therefore, we need to check both isRelative() (from QUrl and QFileInfo) to make sure that path is relative and does not contain any scheme. [0]https://doc.qt.io/qt-6/qfileinfo.html#platform-specific-issues [1]https://doc.qt.io/qt-6/qurl.html#isRelative Task-number: QTBUG-122224 Pick-to: 6.5 Change-Id: Ie97589c5054e8fa4c33c9f4d6a6973c0cb88e369 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io> (cherry picked from commit d5e9246fd6fc72357c5ae0fe3a9b46b80a06b77d) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit b3c43fec6731cd2f8357cf8e1c6ae3d582a6247c)
* GStreamer: implement more tracing helpersTim Blechmann2024-03-072-0/+20
| | | | | | | | | Pick-to: 6.5 Change-Id: I178da93f756aff0980d3e24e7404558dad708ca4 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit d5c6a8b31b0ff7f26976502421125d330a8524cc) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 7fdd5eb278d3aee4a127b0ad5341fffd5488e9af)
* Support multi-lens (dual, triple) logical cameras on Apple devicesLauri Laanmets2024-03-071-3/+49
| | | | | | | | | | | | | | | | Use 'AVCaptureDeviceDiscoverySession' to discover all multi-lens camera types that automatically switch between lenses. Use [AVCaptureDevice defaultDeviceWithDeviceType] to try to find most "powerful" camera type as default. Pick-to: 6.5 6.2 Task-number: QTBUG-121422 Change-Id: I04aa9a64ee459359d117b928baaaf0970df7ce21 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> (cherry picked from commit 681b93eb85c5460d2415960c6fba21cb0281cd64) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 5da455d8f70080d4f2468da43899060f6d97daf3)
* platform: header cleanupTim Blechmann2024-03-071-4/+0
| | | | | | | | | | | | | | qplatformmediadevices_p.h contains unused forward declarations and headers. Pick-to: 6.5 Change-Id: I7b5bccf409dfe901c138017d8abd0a70ca7a11cd Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Mikko Hallamaa <mikko.hallamaa@qt.io> Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> (cherry picked from commit cb49178e426808d4ba3ab0e14758186f9e2af156) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 6b9d1758989f79cd519974d127529a1cb4b504b6)
* GStreamer: use more RAII handle typesTim Blechmann2024-03-074-34/+50
| | | | | | | | | | | Small modernisation by avoiding the need for explicit memory management Pick-to: 6.5 Change-Id: I6248be7c9a76780b980276ba444393dabf367281 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit 3371efb74848a66560ad018366f8f26f592c160c) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 9c405be6019d3b50d23b90b7c703bd9ed78e58d3)
* Tests: add QApplication to `devices` testTim Blechmann2024-03-061-8/+7
| | | | | | | | | | | | The `devices` test requires a `QApplication` to avoid warnings Pick-to: 6.5 Change-Id: Ie48fff3d8bd5e8a6f254c66d07aa8850fed89934 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> (cherry picked from commit cd8c14d3bd00b4d09f28fd7156fffc2e755257f9) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 4f9aac867e7d49bf36c48cf6c2dc19b47f9a52f9)
* Relax rule of finding shared ffmpegArtem Dyomin2024-03-061-7/+12
| | | | | | | | | | | | | | | | | | | | The main reason for the refactoring: - we've got a problem on CI with integrating QT_DEPLOY_FFMPEG=TRUE and shared ffmpeg on macOS arm. Now it's not possible to integrate both together at the same time. Even though the problem is only with arm, it makes sense to keep the behavior the same on other platforms. After the patch developers and CI will be able to compile the FFmpeg plugin with static FFmpeg and QT_DEPLOY_FFMPEG=TRUE, and get a warning message in this case while running cmake. Pick-to: 6.5 Change-Id: I1fccc9e3a8360190f1e393a0c4805068bca47c5f Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit d535e4ba3d8308f3b40d3f8297760c2ef36a2f04) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 4a32395910d08238a51c041cb31de73874ada1b4)
* GStreamer: small API improvementsTim Blechmann2024-03-052-4/+7
| | | | | | | | | | | | `syncChildrenState` can be used to sync the state of all children of a bin. Pick-to: 6.5 Change-Id: Ie5bba41346c9d9e88c9299e4c84c1b2a6f46233d Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit 8f2c79f74e69aea4b6d8181b026594cf4ef7b57a) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit f17aff8edeb52e4169a24596d2bdde4881d1a52d)
* GStreamer: QGstreamerMediaCapture - make element state more robustTim Blechmann2024-03-051-9/+6
| | | | | | | | | | | | avoid setting elements to PLAYING, when the pipeline isn't playing Pick-to: 6.5 Change-Id: I133e4f3fc0a32805c2394cbf96c9f84dca4c972c Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> (cherry picked from commit c2e50467eee5a01efaadf3b0ea9cd893a3f2b784) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit ae3190d9fbd33f166f92443de5755c69c707fd3f)
* GStreamer: link camera bin only when pipeline is pausedTim Blechmann2024-03-051-22/+24
| | | | | | | | | | | | | Task-id: QTBUG-122638 Pick-to: 6.5 Change-Id: I057a915394aba710d8eac94f98fed28c67822004 Reviewed-by: Mikko Hallamaa <mikko.hallamaa@qt.io> Reviewed-by: Lars Sutterud <lars.sutterud@qt.io> Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit a4fab41303f67ccfae3716ad64ea354c8669998d) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit c7b54e31c7da3c1e1b55d66efc9ee8ecaba27963)
* GStreamer: media capture - safer encoder linking/unlinkingTim Blechmann2024-03-051-38/+42
| | | | | | | | | | | | we need to make sure that the pipeline is not running when linking/unlinking the encoder bin. Pick-to: 6.5 Change-Id: Ie1f92c3a8204d34695e35499e7bdfe81d929912a Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit 2514e79878d30c424cc2364b3d726c25eb133285) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 74c50ec3a074a85c11bc7056ff542cd8dd22187c)
* GStreamer: improve warning consistency for linking elementsTim Blechmann2024-03-054-19/+19
| | | | | | | | | | | | Move the warning about linking GStreamer elements to qLinkGstElements to make warning consistent across all instances. Pick-to: 6.5 Change-Id: I258ad39f7b87ddc736bdbca171f2e79c994199f9 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit f516f022a2b598829496a652f80d35818628840d) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit e45b8f0f20162a625b115f3d91b4906e957852c2)
* GStreamer: clean up sync APIsTim Blechmann2024-03-056-107/+123
| | | | | | | | | | | | replace `beginConfig`/`endConfig` with a scoped functor API `modifyPipelineWhileNotRunning` to make code easier to reason about. Pick-to: 6.5 Change-Id: Ifd47aaca9f8b34173f28c7f573ff7c8d02310e21 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit bea05730e0bb40c86fe1ddc5ddefa70bdfdf9397) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 8baad13658b1df29d967a4999a58f0cac17387c4)
* Don't store video frames in QMediaPlayer tests by defaultArtem Dyomin2024-03-042-12/+3
| | | | | | | | | | | | | | Storing of video frames is not needed in many test cases. The tests that need it should set storing frames in the test body. Pick-to: 6.5 Change-Id: I9d71c23cdd511c6047fd2a42a2a51683f268fa52 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> (cherry picked from commit af4c7a761f15a211457c27e10ae260d8652a21f9) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 1f13a78e19a118f8e814e629e5ddd3909801e8d2)
* Fix pulse audio sink flakinessArtem Dyomin2024-03-041-0/+4
| | | | | | | | | | | | | | | | | The problem is pulse audio sometimes calls the draining callback after deleting the audiosink, which causes memory corruption. Also, not deleted operation is a memory leak. We have to cancel the draining operation to prevent the callback. Pick-to: 6.5 Change-Id: Id0f25034308eb57bae58eb519e8077f0002fcd9d Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> (cherry picked from commit 9853f5be3891e3fa36a03a469bf70bb8acd96fc3) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit adcff8a776ce98da2c57772faaa135c6fb013ab8)
* FFmpeg: Disable V4L2 M2M codecs for encodingMikko Hallamaa2024-03-041-6/+16
| | | | | | | | | | | | | | V4L2 M2M codecs don't work correctly for encoding, so they should be disabled for now at least on Linux and Android. Pick-to: 6.5 Task-number: QTBUG-111190 Change-Id: I378d99ebefdc4e49b07663a2b6fb349b9b9882b0 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> (cherry picked from commit a19597f04f23e8bb185a2e09e3a715e3719031de) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit a93d8065cdcca107d9cd9a5db6cc61552c0dce36)
* Add a test for signals of QMediaPlayer upon destructionArtem Dyomin2024-03-042-1/+34
| | | | | | | | | | | | | | Task-number: QTBUG-98437 Pick-to: 6.5 Change-Id: Iaa9cb568f17227855966961a5b021d28c7a6e4bb Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Lars Sutterud <lars.sutterud@qt.io> Reviewed-by: Mikko Hallamaa <mikko.hallamaa@qt.io> (cherry picked from commit 9f0c777d78f97cd01da716809154d30f7926f554) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit c8be3261625bbf3c8562d28dc96b4ab082987e89)
* Clarify documentation for QMediaMetaData::Key::ThumbnailImageJøger Hansegård2024-03-041-2/+2
| | | | | | | | | | | | | | | | | | | | QMediaMetaData will only return a QImage for the key QMediaMetaData::Key::ThumbnailImage if the media contains an embedded thumbnail image. Specifically, Qt Multimedia will not generate an image if it is not already part of the metadata on the media. This is already documented in the Common attributes, but this patch makes it more explicit, also for the QMediaMetaData::Key::ThumbnailImage doc string. Task-number: QTBUG-116324 Pick-to: 6.5 Change-Id: I537c7349aa08ecaf72f0a3b449744a6261f975aa Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Tim Blechmann <tim@klingt.org> (cherry picked from commit 2f830a63f13c307d97fe61adc7cdfe38be16fd1e) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 8526bb5a32e749b8976a594803a3a230b2dd6aaf)
* Fix emitting QObject::destroyed upon deleting of QMediaPlayerArtem Dyomin2024-03-042-5/+9
| | | | | | | | | | | | | | QObject::disconnect() has been replaced with blocking of signals in the body of the destructor. Fixes: QTBUG-98437 Pick-to: 6.5 6.2 5.15 Change-Id: Ifb3bcecea1cc1c53dde897a97bf540051dc449b4 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Lars Sutterud <lars.sutterud@qt.io> (cherry picked from commit 7ddaf778abcec8774e72ed9cc9db5c5c0a5397ba) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 7909926e2eb92fdd996db321a3388b67552fe28c)
* cmake: add tests/manual/CMakeLists.txtTim Blechmann2024-03-031-0/+6
| | | | | | | | | | | | `tests/manual/CMakeLists.txt` is sourced by `qt_build_tests`. Pick-to: 6.5 Change-Id: I89509367a412f85e6b2761db09e31e81a2df6815 Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit f4d3f96f72ad5d4674b59ad5300adb075105d501) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 0c0114ab81c3cc23be6c545e647cb05d43d679a9)
* Update dependencies on '6.6' in qt/qtmultimediaQt Submodule Update Bot2024-03-031-4/+4
| | | | | Change-Id: Ieaed512493649ca65e4ce3f28484a27a738f9e7c Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* GStreamer: QGstStructure - add APIs for pixelAspectRatio and nativeSizeTim Blechmann2024-03-023-0/+34
| | | | | | | | | | Pick-to: 6.5 Change-Id: If14ea149367a34a59dc6de1c2e119fb2b8f9e302 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Lars Sutterud <lars.sutterud@qt.io> (cherry picked from commit 055d84815253b723b6c2361dd6c7ee1d6e6c2101) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 61411ea81c0d286d8fd75c43a8aa22cda200cc87)
* GStreamer: QGstreamerVideoSink - add capsfilter for pixel-aspect-ratioTim Blechmann2024-03-023-6/+27
| | | | | | | | | | | | | | | | By adding a caps filter to the videoSinkBin and using a videoconvertscale instead of a videoconvert element, we can obtain a square pixel scaling on the application-side Task-number: QTBUG-108754 Pick-to: 6.5 Change-Id: I9fb95ad1075b34b4dd3dec9bee8b1c254e924a19 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Mikko Hallamaa <mikko.hallamaa@qt.io> Reviewed-by: Lars Sutterud <lars.sutterud@qt.io> (cherry picked from commit e7b801361654eedbb844865ef5b4454492ee2323) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit a2d7b3b078c77e3b8de1600d755cbc6f6fe7af37)
* GStreamer: ensure stopping elements before removingTim Blechmann2024-03-028-43/+28
| | | | | | | | | | | | | | | | When stopping elements after removing, we've seen deadlocks when setting the state back to null. We now ensure that we always stop elements before removing them from their bin. Fixes: QTBUG-122638 Pick-to: 6.5 Change-Id: I9b2ac6329082a6a08f8c9807106b75c7ea680bd3 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> (cherry picked from commit cf84c3164fd5bfa85d2e9c89fd24d8f050cee934) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 6027a24f23c5059f23b4791e8b16d430e5ddafa3)
* Fix spelling of FFmpeg in (end-)user-visible stringsVolker Hilsheimer2024-03-019-16/+16
| | | | | | | | | | | | It's two capital "FF", lowercase "mpeg". Pick-to: 6.5 Change-Id: I96d90ba959c5f52e998323800e97c8e72c731910 Reviewed-by: Kai Köhne <kai.koehne@qt.io> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit 7d616997b62c37f3e3a9f39b4116151ec2846c6b) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit e23221e3727dfd73d070d7e8a0d72da3137b227a)
* FFMpeg: add a precheck condition in linux CUDAInho Lee2024-03-011-2/+15
| | | | | | | | | | | | | | | | CUDA backend requires libnvcuvid.so in libavcodec in Linux. This might be a temporal patch but can avoid crash in linux nvidia environments. Pick-to: 6.5 Fixes: QTBUG-122199 Change-Id: I5f376be9db3ccea3405940d4f5ea5f77043a9131 Reviewed-by: Tim Blechmann <tim@klingt.org> Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit 3bec392c1ffcfa29a9fcbe2ef2ad76727f36e699) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit bea094bd3c25519d5c4132627a8bcad9f4dd240e)
* windows: fix video playback when audio output is not specifiedVladimir Belyavsky2024-03-011-0/+3
| | | | | | | | | | | | | | | | | | | | | | | When setting up the topology in MFPlayerSession, we add source and output nodes for each source stream. But in case when output node can't be created for some reason, e.g. this is an audio node and audio output is not specified (m_audioOutput == nullptr), we may result in an error on setting the topology (IMFMediaSession::SetTopology), like "A stream descriptor was set on a source stream node but it was not selected on the presentation descriptor." Therefore it was causing an issue where the video would not play at all. To fix this, we need to simply remove the source node from the topology if the output node cannot be created. Fixes: QTBUG-122608 Fixes: QTBUG-122817 Pick-to: 6.5 Change-Id: I046a78a257890b1d1c182f5f1e3dc48761985afa Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> (cherry picked from commit b59bf3fd57c4cebd853ac96a505c1b249c00e5f5) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 961961da77b8064fe3d923da1f55b48ff0e85313)
* GStreamer: handle types - fix taglist/sample handlesTim Blechmann2024-03-012-4/+9
| | | | | | | | | | | Use correct traits classes and make reference count explicit Pick-to: 6.5 Change-Id: Iba0d6327948a4f1af0b72416e5fd36636f7b92e5 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit 5cc5f1985d124e7c3455abbdb3d2a0af6a8c7d00) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 1b8861d4862ce3d41d024c1eb7abac25bbdd0502)
* Android-FFMpeg: Dynamically create/remove AndroidSurfaceTextureBartlomiej Moskal2024-03-012-4/+35
| | | | | | | | | | | | | | | | | | | | | | | Before this change, MediaCodecTextureConverter used a single static AndroidSurfaceTexture. When trying to play another video, currently used Surface was trying to be reused. Because of that, more than one simultaneous video playback caused the app to crash on Android. Android surface textures need to be created dynamically, depending as needed. MediaCodecTextureConverter is created as a backend in TextureConverter when the first frame from videoSink appears. At this point the Surface is already created, set in the codecContext and used by FFmpeg. Pick-to: 6.5 Fixes: QTBUG-121182 Fixes: QTBUG-122649 Change-Id: Ie9845ac78d770e4c06b6046fc59c0afbd39fb14a Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit dd1d51a5c8cdc2bdd37493570e0481a618049280) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit b04f18195e8bd5428376b34d07dbe7f16847d1fe)
* Fix QWaveDecoder handling of padding bytes in RIFF chunksJøger Hansegård2024-02-295-4/+15
| | | | | | | | | | | | | | | | | | | | | | | | | This patch adds support for reading WAV files with odd sized payloads in QWaveDecoder. This allows playing WAV files that contains odd-sized chunks before the 'data' chunk that contains the audio data. According to the specification, Multimedia Programming Interface and Data Specifications 1.0. IBM / Microsoft. pp. 10-11, the payload of RIFF chunks should be padded to an even length, so the fix is to round odd payload sizes up to next even size. Tests are extended with two files where a bext section patched in. One file has an odd length bext chunk with padding byte, the second file has an even length bext chunk without padding byte. Fixes: QTBUG-122193 Pick-to: 6.5 Change-Id: I6940db47db91a61e6b97f8f41043b2967b0d155a Reviewed-by: Mikko Hallamaa <mikko.hallamaa@qt.io> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Tim Blechmann <tim@klingt.org> (cherry picked from commit 7d16111777350deec9ebc5ee1f08288af19534e2) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 2fe57dae028205b118670e4aa4293d4f8aa14744)
* GStreamer: encoder - processBusMessage improvementsTim Blechmann2024-02-291-20/+36
| | | | | | | | | | | | | | | * avoid unnecessary message copy/reference count * use switch statement to dispatch message types * use if constexpr for extended tracing Pick-to: 6.5 Change-Id: I0e004305605a502bd2e20a23bde379678fd2e871 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Mikko Hallamaa <mikko.hallamaa@qt.io> Reviewed-by: Lars Sutterud <lars.sutterud@qt.io> (cherry picked from commit 61fa11a74e434d7104b67db292a4de852d38dabd) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 0f5c60d0893773301f7147535b1de1a2e22b8e68)
* GStreamer: use correct factory functionTim Blechmann2024-02-291-1/+1
| | | | | | | | | | | | | | `QGstBin::createFromFactory` asserts that the element is a bin. `filesink` however is not a bin. Pick-to: 6.5 Change-Id: Id2ae73c2047dfde98cbaec37e15ed3b46f1c1652 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Lars Sutterud <lars.sutterud@qt.io> Reviewed-by: Mikko Hallamaa <mikko.hallamaa@qt.io> (cherry picked from commit ce6413dc555f4c871b551fe8a13f919083092c12) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 980b0b608c72643d1aae465a215549742801e31f)
* GStreamer: cast subtitle string to const char *Tim Blechmann2024-02-291-1/+1
| | | | | | | | | | | | | | | Should prevent us from instantiating `std::char_traits<unsigned char>` Fixes: QTBUG-122753 Pick-to: 6.5 Change-Id: Ied3873f794c93da897ad4cc5032a5e02a15ebe68 Reviewed-by: Lars Sutterud <lars.sutterud@qt.io> Reviewed-by: Mikko Hallamaa <mikko.hallamaa@qt.io> Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit 29fd2a4e263a1f6c46632844f12d3c37c25c3025) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 87c043f584612c14a527fe178e626539a4287dad)
* GStreamer: set sink to NULL state before re-creating itTim Blechmann2024-02-281-0/+3
| | | | | | | | | | | | | | Fixes a GStreamer warning about `qgstvideorenderersink0` being "READY" rather than "NULL" during deref Pick-to: 6.5 Change-Id: I19598dd749cd93722886c36ed5e7b0bf132ad6ff Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> Reviewed-by: Lars Sutterud <lars.sutterud@qt.io> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit 8215decc03e4ffbf3d1cd6e709e95ed21360d342) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 85da55a3f636f69e90e1589425928ebfcf1d3153)