summaryrefslogtreecommitdiffstats
path: root/src/multimedia/platform/gstreamer/common/qgstreamervideooutput.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Fix a deadlock when changing the video outputLars Knoll2021-05-261-0/+5
| | | | | | | | | | | | | | | | | Changing the videooutput and deleting the mediaplayer directly afterwards could lead to a deadlock, as the videosink was blocking on a pad and then calling a slot on the main thread using a blocking queued connection. If the main thread was changing the state of the gst pipeline at the same time, this could lead to a deadlock. Avoid it by pausing the pipeline before changing the video output. Change-Id: I0d0cbad0ab97a4eb83dd3c66c664c01de3b0ea90 Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Pass the remaining mediaplayerbackend autotestsLars Knoll2021-05-071-0/+18
| | | | | | | | | | | | | | | * Add a notification mechanism to the pipeline so the video output knows when QMediaPlayer is in a stopped state (using QProperty), as we want the pipeline to be in a paused state internally, but not get preroll frames if we're in paused externally. * Properly emit metadataChanged() signals, and ensure we're in GST_STATE_PAUSED before trying a seek. Change-Id: I1cad557e648f82909a63cba8d6144df8476524f5 Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Various reliability bugfixesLars Knoll2021-04-191-5/+1
| | | | | | | | | Fix crashes due to dangling pointers. On gstreamer avoid using message filters when we do not need them. Change-Id: I1bce271dda4b5efb3913954deb719542288b9b12 Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Clean up most QAbstractVideoSurface usagesLars Knoll2021-04-061-26/+0
| | | | | | | | | | The class is scheduled to be removed, once all it's usages are gone. QVideoSink is the replacement going forward. Change-Id: Idc0a4133496839bf9f95aa9bcf7d6d37cacd549b Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Remove the videoscale element from the gst output handlingLars Knoll2021-04-061-5/+4
| | | | | | | | | | | We don't need it. Either we render to a window which can in all cases scale itself, or we do render QVideoFrames, and then the scaling might just as well be done at the end to avoid one additional memory copy. Change-Id: I147850169d5a978e20ddd036ea6b2efa3639e96f Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Add support for SW rendering in QVideoSinkLars Knoll2021-04-061-37/+53
| | | | | | | | | Retrieve SW buffers from gstreamer if that's what the sink wants. Change-Id: I3598594a219e436d6f64c5eefbc001f3f46d3789 Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Rename QGstreamerVideoWindow to QGstreamerVideoSinkLars Knoll2021-04-061-2/+2
| | | | | | | | | This will be able to handle non windowed output as well in the future. Change-Id: I99d3d2c2aefcbde4ef01c373fb6f92be4ab9b050 Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Retrieve the QPlatformVideoSink from the platform integrationLars Knoll2021-04-061-4/+9
| | | | | | | | Proper layering. Change-Id: I66df7bb883dc70e65d52df854f309545b86c61b6 Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Get windowed playback working againLars Knoll2021-04-061-0/+32
| | | | | | | | | | | And start moving over to the new QVideoSink API. Fun side effect: HW accelerated video decoding does work with this change on Linux. Change-Id: Ic88d13b4fc7028b300349f9bf7ed1a7b3e08d37c Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Move the gstreamer video output handling into it's own classLars Knoll2021-03-191-0/+146
This will allow us to re-use the implementation for the capture session. Change-Id: I383133b7f5710379566768c372de0c1e78a56855 Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>