summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Fix corner case with single declared channel kAudioChannelLabel_MonoArtem Dyomin2023-08-211-1/+3
| | | | | | | | | | | | | Usually, single channel is not declared in this way, but in some cases it seems to occur on users side. Let's handle the corner case without adding the ambiguous mapping to channelMap. Task-number: QTBUG-113256 Change-Id: I6c17741ba339bc229536aff1691a147d7a805db5 Reviewed-by: Doris Verria <doris.verria@qt.io> (cherry picked from commit 8f577b49b4aaa33c989cde644cc1376aacaa783f) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Skip windows capture test on macOS CIArtem Dyomin2023-08-211-0/+3
| | | | | | | | | | | | Window capture tests are not available on macOS CI due to permissions. Running the blacklisted tests without permissions wastes time and causes random crashes. Let's skip the tests to unlock CI. Change-Id: Id732d85f1ad578d819f9a6c34e8fb0250bb2bc62 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit 36d26779c74a222cff5e95bd3f4b873595b1c93f) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Add integration tests for window capturingJøger Hansegård2023-08-1911-4/+1000
| | | | | | | | | | | | | The tests revealed occasional failure to start window capturing on Windows UWP platform. This was worked around using a retry loop when the error occurred. Fixes: QTBUG-115749 Change-Id: Id86c17f1b84fc9ba07e026ed6015cb2cc659a213 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit f9e58abcd2f7ac2abf2b6e6fa38ac5c5cc11a0c2 with manual resolution of build issues) Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Disable decoder setup if HW textures not sharedPavel Dubsky2023-08-181-38/+48
| | | | | | | | | | | | | Currently, if hardware texture sharing is disabled decoder is still being set up for it, which results in an erroneous behavior. This patch disables decoder setup in this case which leads to default FFmpeg initialization for frames context. Task-number: QTBUG-108427 Change-Id: Ibef4af04bce655088ad40bc0e7131d04bc76abb9 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit 45be9f75b7002363b673ebb8e2ce11086145258f) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Implement precheck of ffmpeg hw devices and codecsArtem Dyomin2023-08-174-60/+168
| | | | | | | | | | | | | | | | | | | | | | | | This is a preparation for including nvenc/nvdec to linux and maybe windows. The related commit includes nvdec/nvenc to linux build, windows is to be investigated. codereview.qt-project.org/c/qt/qt5/+/496374 In some cases ffmpeg doesn't filter not available hw accelerated codecs. We need our own filter to enshure the best codec selection and not expose non-working functionality. Some implementation details: * Hw devices are tested on the first initialization. * Ffmpeg logging should be disabled on the testing stage in order not to spam with errors. * Codecs for invalid hw devices are filtered. Task-number: QTBUG-115471 Change-Id: I0992f9d4ff37b59a5625ffea4bd208455fc9f1ac Reviewed-by: Lars Knoll <lars@knoll.priv.no> (cherry picked from commit 1e4b642fa5ba9250803092b855024ed5bb335072) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Update dependencies on '6.6' in qt/qtmultimediav6.6.0-beta3Qt Submodule Update Bot2023-08-161-4/+4
| | | | | Change-Id: Ie9316a5f16a47fe9f4026c5ca948f7bae561d84a Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* Fix nvenc settingsArtem Dyomin2023-08-161-8/+19
| | | | | | | | | | * av1_nvenc was not added * global_quality is deprecated for nvenc Change-Id: I5d51643f597522d78e2fa3f147cad02c9245ee0e Reviewed-by: Lars Knoll <lars@knoll.priv.no> (cherry picked from commit fdf84d45259acb7cbad7d612ea02c1ee6f025659) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Android: add Exif data to photos on ffmpeg-backendBartlomiej Moskal2023-08-167-0/+82
| | | | | | | | | | | | | | | | For FFMpeg-backend on Android, YUV_420_888 format is used. YUV_420_888 is a RAW frame that does not contain any Exif data. Data cannot be taken directly from the picture, but some data can be extracted from CaptureResult. This commit includes adding some Exif data to the photo taken on FFmmpeg-backend. Task-number: QTBUG-113020 Change-Id: Ic331d653b78eacc17929b9980fd977435774756a Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit 0f6c9b3d6cd9cd9155c832ad32d47525806e1b0b) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Update dependencies on '6.6' in qt/qtmultimediaQt Submodule Update Bot2023-08-151-2/+2
| | | | | Change-Id: Ie43d2bb6bed8d1a5daa12817c22e2e56f70e05f3 Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* Fix build with older FFmpegSamuli Piippo2023-08-151-0/+4
| | | | | | | | | | | Amend fa6f7bf67df6980d45c66c9018a42c154399b8f0 to fix builds with older FFmpeg versions, some of the defines are available only after FFmpeg n4.4. Change-Id: I2a86699a06e4e260051682f8deac2d03e9c7480c Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit 7adc9509d3f4a08d81a9fbf40334bdbb14e48c01) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Update dependencies on '6.6' in qt/qtmultimediaQt Submodule Update Bot2023-08-151-4/+4
| | | | | Change-Id: Iba5d5e8f23b215ba354dbb69272a9eddeeadc833 Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* Fix parsing *.pc file in FindFFmpeg.cmakeArtem Dyomin2023-08-111-15/+18
| | | | | | | | | | | | | | | The build failure is not reproduced on CI but can be reproduced locally if adding additional deps to the ffmpeg build. In this case, deps may contain '-L:/usr/.../arm64-linux-gnu', the prev regex found -l in the middle of the path and caused a compilation error. Change-Id: I56c229513a1d3752804d3da08e08785738feee0a Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> Reviewed-by: Lars Knoll <lars@knoll.priv.no> (cherry picked from commit a6864238d4d4d3ca2764c36829eb2b029d175ff3) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Improve debug dumping of ffmpeg codecs detailsArtem Dyomin2023-08-111-7/+79
| | | | | | | | | | | Dumping of specific flags is very useful for investigation of ffmpeg hw acceleration features. Change-Id: Ica313fce870d222f16e7a8af7b53562e2734ad22 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> (cherry picked from commit fa6f7bf67df6980d45c66c9018a42c154399b8f0) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Android-backend: Save photos from bytes array using QFileBartlomiej Moskal2023-08-115-41/+55
| | | | | | | | | | | | | | | | Since Qt6, Android-backend started to use QImageWriter for saving pictures on device. This makes photos do not contain Exif data. Exif data were lost during QVideoFrame creation. Also QImageWriter does not support it at all (QTBUG-28330). To bring those metadata back, Android-backend will save photos from whole bytes array using QFile. Task-number: QTBUG-113020 Change-Id: I7e5625a2943ee7edef24cbab223c617e317606b1 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit af2321f6bf8e404f8bbd8eb1391e16a9da2b0a9a) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Android: Clear supported flash modes on FFmpeg-backendBartlomiej Moskal2023-08-111-0/+2
| | | | | | | | | | | When updating Camera Characteristics, we should first clear current list of supported flash modes. Fixes: QTBUG-115843 Change-Id: I25adbd82612100080e189e93097f0132496cddb0 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit 7ad75617eab2e3e6b6a2b4143ea15cdba9035bc9) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Prevent possible ffmpeg crash when media header writing failedArtem Dyomin2023-08-112-4/+13
| | | | | | | | | | We shouldn't write a trailer if the header has got failed. Change-Id: I6ba7469196682123a3191963351a236fd9abdbb5 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> (cherry picked from commit ed5e09af3f99ef252f17955bf94b2df4c529124c) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Playback engine atomic variables cleanupArtem Dyomin2023-08-106-25/+24
| | | | | | | | | | | | | | | | | | * use acquire-release memory order instead of default mem-seq. The strict sequeintial order is not needed if not having special sync requirements; the order might be a bottle-neck if widely used in many threads. In the future, it might be investigated and optimized with relaxed operations in some cases. * use QAtomic instead of std::atomic, since QAtomic has explicit convenient methods and std::atomic sets the mem-seq order by default. Change-Id: Iabd9c1bc072db491e0eba7eacaf8f4ea8343cee4 Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit d64c490eb977258fd30e7a78cfed1ad6d86d3f3f) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix mediaplayer scroll issue if stream duration is missingJøger Hansegård2023-08-102-13/+65
| | | | | | | | | | | | | | | | | If a media file is missing per stream duration data, the mediaplayer slider operations to scroll in video would restart the video from start. The cause of the issue was that the mediaplayer duration was calculated from the stream durations and became 0. The ffmpeg demuxer already has more advanced heuristics to calculate the media file duration, and this patch fixes the issue by also taking the media file duration into account. Fixes: QTBUG-115747 Change-Id: I906f62c15ffdccadf1da07a75a109961d897b1b0 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit 42107b9d263802d361451c00c8b623fcd45e6922) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* EVR: fix potential crash on accessing to NV_DX_Interop extensionVladimir Belyavsky2023-08-101-1/+6
| | | | | | | | | | | | | | | Under some circumstances wglGetExtensionsStringARB() may return null pointer (unfortunately, it's still not clear why exactly this might happen). As a result we get a crash in a subsequent strstr() call. So for now we just add a simple null pointer check here to avoid the crash. Fixes: QTBUG-109710 Change-Id: Ia77ff7b4490f4b817ddddabfdc14750bd69118d0 Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit 58e0ca625808cb91424d1be05ce3725fb746818f) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* [Multimedia] Fix window capture memory leak on WindowsJøger Hansegård2023-08-091-1/+5
| | | | | | | | | | | The Windows UWP window capture backend failed to release its frame buffer when stopping capture. This patch fixes this issue. Change-Id: I0accfd1a6f350438bf51f0bd18f5ea64e5ba1557 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Pavel Dubsky <pavel.dubsky@qt.io> (cherry picked from commit 302cf88fcb780ac0c366eea570cff84ee197a33c) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Android: Fix taking photos for unavailable CONTINUOUS_PICTURE modeBartlomiej Moskal2023-08-092-4/+25
| | | | | | | | | | | | | | | | | | It seems that auto-focus mode cannot be set to CONTINUOUS_PICTURE on some devices. In such case, when trying to set AF_TRIGGER_START, Auto Focus state will never change from INACTIVE[0] If CONTROL_AF_MODE cannot be set to CONTINUOUS_PICTURE, just take a photo without triggering auto-focus. [0]https://developer.android.com/reference/android/hardware/camera2/CaptureResult#CONTROL_AE_STATE Fixes: QTBUG-115842 Change-Id: I783e34c0971934904e7f19654cd5505ffc221f68 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit 79cc5daf960a8ed293ec21da1744d5041af5230f) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Minor cleanup in qffmpegmediarecorderArtem Dyomin2023-08-092-38/+39
| | | | | | | | | | | | | * use std::unique_ptr for finalization * remove extra static cast * remove unused headers Change-Id: Ie924cc60e6b87ebc6a64be77eb4cb82884b69ef2 Reviewed-by: Pavel Dubsky <pavel.dubsky@qt.io> Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> Reviewed-by: Lars Knoll <lars@knoll.priv.no> (cherry picked from commit b9fb4cb19b767f749439b46d3eb6f80212d719a2) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix a random crash on audio recording stoppingArtem Dyomin2023-08-092-14/+14
| | | | | | | | | | | | | | | | | | | | | | * We shouldn't accept any frames after calling Encoder::finalize. The flag 'isRecording' was designed to handle it, the crash happened because we didn't set it to false. Actually, we don't need the flag, if we connect media frames handler directly. * Let's use a common approach for connecting media with media frames sources to handlers. Direct connection is already used for videoframes; it's safe in this case becasue we perform disconnection and waiting for frames on the finalization. Note, AutoConnection to this is a bit of pessimization in this case, Audio and Video encoders are designed to accept frames directly. Task-number: QTBUG-113247 Change-Id: I2869653b5f3000caf57d261e9bea6f866f358988 Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> Reviewed-by: Pavel Dubsky <pavel.dubsky@qt.io> Reviewed-by: Lars Knoll <lars@knoll.priv.no> (cherry picked from commit 711abaff51aa972a53122d061d6576134ef0019b) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix corner cases in ffmpegaudioinputArtem Dyomin2023-08-091-7/+9
| | | | | | | | | | | | | | | * handle setting invalid frame size, that is possible with some ffmpeg codecs (wav) on recording. * fix the rare race condition of storing bufferSize between twice loading of bufferSize on data writing. Task-number: QTBUG-113247 Change-Id: I1cddbc47b2b7b5a45ca39f202543229f136547f2 Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> Reviewed-by: Pavel Dubsky <pavel.dubsky@qt.io> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit 29657e7db96fd7db1ff58fdbbed2dbc3644fc96b) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Update dependencies on '6.6' in qt/qtmultimediaQt Submodule Update Bot2023-08-081-4/+4
| | | | | Change-Id: Ie1b4559d637ddf4ee9a8d2ea5acc2062607f0c6e Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* Do not export QCapturableWindow as a QML NamespaceIvan Solovev2023-08-081-7/+0
| | | | | | | | | | | | | | The type is exported as a value type using the normal approach with QML_FOREIGN + QML_NAMED_ELEMENT. It does not contain any enums, so it does not make sense to use QML_FOREIGN_NAMESPACE to export them. This commit partly reverts 24c854fff9af00461b0920074b23d156e345a804. Change-Id: Ie46f4ac134e04c30a115093e9319d1d101b0b411 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 440c69346614bddc26b029983b2a4550e280d41b) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QtMultimedia: fix duplicated type exports to QMLIvan Solovev2023-08-081-4/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | For some of the QtMultimedia types we need to export both the type as a value type, and also its enums into a namespace. With the pre-existing approach this results into duplicated entries in the qmltypes file, which confuses Qt Design Studio. Fix it by introducing a dummy derived class for each of such types, and using this derived type to export the enums. This patch fixes exports for the following classes: * QAudioDevice * QCameraDevice * QMediaFormat * QMediaMetaData Fixes: QTBUG-115360 Fixes: QTBUG-115563 Fixes: QTBUG-115564 Fixes: QTBUG-115566 Change-Id: I9073ec8317e1ef4f5f2a613406c750f1d1cd6d4e Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 16ab1dd1d13b6644476e2bc33ac9cb2310903c32) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix x11 surface capture alpha channelArtem Dyomin2023-08-075-5/+169
| | | | | | | | | | | | | | | | | We declare 0xFF alpha channel in formats XRGB, BGRX, etc, but on some linux systems it's 0xff in xImage. The patch fixes the problem and suggests SIMD optimizations for intel platforms that makes a difference with 4K displays. With the optimizations, the overhead is not so big comparing with memcpy. We have a test that covers the case, it failed on some machines. Change-Id: I78927ea58159ae67bbf993f30b8dec45f617edc1 Reviewed-by: Lars Knoll <lars@knoll.priv.no> (cherry picked from commit 3ac997f0b34a28af2e754fccdb8671d89ebe22d9) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix build of qtinterfaceframeworkArtem Dyomin2023-08-072-2/+2
| | | | | | | | | | | | | | The error is: The link interface of target "Qt6::QFFmpegMediaPlugin" contains: VAAPI::VAAPI but the target was not found. Task-number: QTBUG-115763 Change-Id: Ie1cbacdc719d51d88fb08b251c0315487b1ce563 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io> (cherry picked from commit 1c811b5918daa908f725cdae4933b0aca347eb42) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix memory leak and dangling file handle in ffmpeg EncoderJøger Hansegård2023-08-071-0/+6
| | | | | | | | | | | | | | | | The ffmpeg Encoder was leaving the encoded file open after finalization. This left the file locked until process termination, and was causing a memory leak. The issue prevented deleting files recorded by the 'recorder' sample application without first closing the application. Fixes: QTBUG-115810 Change-Id: I4b0ed796c689482e9274e21bd5a1045a62642240 Reviewed-by: Pavel Dubsky <pavel.dubsky@qt.io> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit 653d90270e576a52d296493038e3ed563075c36f) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Docs: Change audio to media in playbackRate property descriptionNicholas Bennett2023-08-041-1/+3
| | | | | | | | | | | Change audio to media in MediaPlayer playbackRate property description, added a link to the equivalent C++ property for more detail. Fixes: QTBUG-115122 Change-Id: Ic45fe94c8dcf993cb8573140d0daa7031ef62066 Reviewed-by: Paul Wicking <paul.wicking@qt.io> (cherry picked from commit 7b198813d20548505701131d1745118b2ad78155) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Android: Move clean up AndroidTextureThread to its destructorBartlomiej Moskal2023-08-041-7/+15
| | | | | | | | | | | | AndroidTextureThread should properly clean itself instead of expecting the owner to do it. It is needed especialy when AndroidTextureThread will be shared. Change-Id: I55603e73da5b3621385c7ce72b51242763dd1b4c Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io> (cherry picked from commit c59c642181a8bd265817793e0e44d87aaf6c01e5) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix possible reason of video sink frame setting test flakynessArtem Dyomin2023-08-031-1/+2
| | | | | | | | | | | | Let's filter possible end frame handling. Change-Id: Ib46b131f85afe2fc27ab144d573e0b8bd5e4daf2 Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> Reviewed-by: Pavel Dubsky <pavel.dubsky@qt.io> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> (cherry picked from commit fb9b9a313d856a196ba3c5aae53299457f8dfe01) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Update dependencies on '6.6' in qt/qtmultimediaQt Submodule Update Bot2023-08-031-4/+4
| | | | | Change-Id: I7c6119aca717795aa9f4170123517a20b2fdd67d Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* Implement debug output for AVRationalArtem Dyomin2023-08-034-9/+13
| | | | | | | | | | | We print AVRational in several places, let's reuse the code. Change-Id: Idbadae656af54337350bb7872d75f309592b010d Reviewed-by: Pavel Dubsky <pavel.dubsky@qt.io> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> (cherry picked from commit a992f2dc2fbe71f114ca4b7d69689c745d754e0e) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Set camera active property to false after stopPavel Dubsky2023-08-031-1/+1
| | | | | | | | | | | | | Current implementation reset active camera pointer after activeChanged is emitted, but that's incorrect because during this process it's used in QWindowsCamera::isActive to return current active state. The fix is to reset the active camera before the signal is emitted. Task-number: QTBUG-114174 Change-Id: Icc4b8da794d8a7a91bda5a9126ba226158e9ad8f Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit 9bd10b941b035cacab2ef3ff7f7530517c5418fc) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix encoding for codecs with defined fixed frame ratesArtem Dyomin2023-08-024-28/+116
| | | | | | | | | | | | | For such codecs selected time base should match 1 / frame_rate, it was set just frame_rate in the previous impl. Also, in the patch we set an adjusted frame rate to the codec context. Change-Id: I33ced3fdd908dbc016b2638387939ad32bd6f030 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> (cherry picked from commit fa1fcce7dae95753f21586a47e6a37ab77d5c773) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix memory leak in audio encoderArtem Dyomin2023-08-025-43/+51
| | | | | | | | | | | | | | | | 2 objects were not deleted. * resampler leaked anyway * codec context might be deleted by ffmpeg, the documentation recommends to delete it. Since the variable was touched, it was renamed to proper name. Change-Id: I94965e83b060b8db251b13c8c0d923cddf804741 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> Reviewed-by: Pavel Dubsky <pavel.dubsky@qt.io> (cherry picked from commit 9cda4c7a5906630d4a3306dae4cefd8331751685) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Screen Capture Example: Fix some typosFriedemann Kleint2023-08-022-4/+4
| | | | | | | | Change-Id: I3a97cf173d8cdd1014689040937ffdb5a28c3d26 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> (cherry picked from commit 213e32ff5d3c674413049684cbccc9b6e5fb3b4c) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Move VideoFrameEncoder::Data members to VideoFrameEncoderArtem Dyomin2023-08-024-174/+175
| | | | | | | | | | | Dynamically allocated VideoFrameEncoder::Data is not need for this case, let's simplify and move all members to the class. Change-Id: I7bfa8f6a92ba0a449dd84843109b1344c86ad5bd Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> (cherry picked from commit 87adcdcf6ffa7d026b22917249fbbee1e5fd1dfd) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Remove processEvents from the destructor of QPulseAudioSinkArtem Dyomin2023-08-021-1/+0
| | | | | | | | | | | | | | | | Processing events in such places causes unexpected behavior, including postponed objects deleting. As result, we got spurious crashes on CI. The crutch with events processing was added many years ago by unknown reason; the destructor is definitely a bad place for it. Change-Id: I0f31598947e6eb098b58244c617ff5eb05186176 Reviewed-by: Pavel Dubsky <pavel.dubsky@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit 0ecfced06cc46a0dd16c9aae281a8ee3ad3ac87e) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Minor forgotten addition to the previous refactoringArtem Dyomin2023-08-011-4/+1
| | | | | | | | | | The changes are in codereview.qt-project.org/c/qt/qtmultimedia/+/493480 Change-Id: I86517cc874d05815a28a6af4e68bc200cfb667bf Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit 972410607f9d788f32ec27ba5d9c6c1f893fc5cf) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Handle encoding errorsArtem Dyomin2023-08-011-6/+11
| | | | | | | | | | We should notifiy users when we cannot start video encoder. Change-Id: Ia8e5256de001c940830279e1c0ce230fa7b9d483 Reviewed-by: Pavel Dubsky <pavel.dubsky@qt.io> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit ee77de75d8129c45720fadfc37aabc07e914c50d) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Implement a workaround for cases packet.pts < packet.dtsArtem Dyomin2023-08-012-14/+49
| | | | | | | | | | | | | | | Some ffmpeg video encoders create packets where dts (decoding time) overtakes pts (presentation time). Muxer doesn't accept such packets. Shifting dts down fixes the problem. Change-Id: Ia27d15650a0d9a8c273229dc4516e18551264676 Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> (cherry picked from commit 49bf21047413fab156345b9f788d2332ba8c61dd) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Cleanup: use unique ptr for av packets in encoderArtem Dyomin2023-08-014-46/+57
| | | | | | | | | | | | | The patch prevents possible memory leaks. QQueue has been replaced with std::queue since it has compilation issues with non-copiable objects. Change-Id: I013c877076616d1386132a391b09c715880cdf6a Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> (cherry picked from commit 072cfbc82c9121a629f53e16de1cd791d8a291a8) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Remove extra pause set in objects killingArtem Dyomin2023-08-011-1/+0
| | | | | | | | | Change-Id: Ic51036b4a4eac2990082bc5bad2cdcba1bf46de5 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> Reviewed-by: Pavel Dubsky <pavel.dubsky@qt.io> (cherry picked from commit a4eb6897e6cbbe43c561d19448317654a0f3d245) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Minor cleanup in PlaybackEngineObjectArtem Dyomin2023-08-012-4/+25
| | | | | | | | | | | | | * QTimer fwd declaration * std::unique_ptr<QTimer> instead of raw ptr * timeout slot instead of lambda * add warning, for checking on CI Change-Id: Ib5954c5f0d58341d82dccd76cbf2856303077987 Reviewed-by: Pavel Dubsky <pavel.dubsky@qt.io> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit f98e3a2acc3a31b67b7ca1ba4041ae276bfbe741) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix odd resolution for encoder h264_mfArtem Dyomin2023-08-011-1/+15
| | | | | | | | | | | h264_mf get failed with odd resolution. We should investigate and include more codecs to the fix. Change-Id: I39482955f2e31f2d16d4add1a66f5e5d8c4afb46 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> (cherry picked from commit 32b1136869803e0404a5312a083d767c88831ef8) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Playback engine: fix corrupted memory on changing mediaArtem Dyomin2023-08-011-0/+4
| | | | | | | | | | | We should wait for finishing all jobs before codecs reset. Optimized solution might be implemented in the future. Change-Id: I16024b052facd1959c47769bb3deb87af091e83d Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Pavel Dubsky <pavel.dubsky@qt.io> (cherry picked from commit 9fce0c9744285f0e086d7434cfcd477071690e15) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix setting frame rate to QMediaRecorderArtem Dyomin2023-08-012-5/+6
| | | | | | | | | | | | We should consider user-specific value, not only the frame rate of the source. Change-Id: I0424d7ac2c803c1cf92cf5b028c89197b86d59b3 Reviewed-by: Pavel Dubsky <pavel.dubsky@qt.io> Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit 998a3874b37840320ca5b1e7451218415fa0e847) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>