diff options
author | Piotr Srebrny <piotr.srebrny@qt.io> | 2022-12-15 15:42:33 +0100 |
---|---|---|
committer | Piotr Srebrny <piotr.srebrny@qt.io> | 2023-01-04 15:35:23 +0100 |
commit | 31411c025a823536c5b4e5da6230eab728bbe344 (patch) | |
tree | e1bebfc6698d03dcc976e73c8ebd9da25e71b6c7 /src/plugins/multimedia/gstreamer/mediacapture/qgstreamermediaencoder.cpp | |
parent | e98cfba8b1ef3d1c0fa4fccc2f2e12379e16db7b (diff) | |
download | qtmultimedia-31411c025a823536c5b4e5da6230eab728bbe344.tar.gz |
Fix memleak in QGstCaps
gst_device_get_caps and gst_pad_query_caps require decreasing of
reference count when caps are not longer needed. This was not done
with QGstCaps. This patch adds reference counting on QGstCaps and
remove QGstCapsMutable as it was based on a missconception. GstCaps can
be mutated only when refernce count is 1. This was not ensured with
QGstCapsMutable.
Change-Id: Id058a0a916b5f76eef758a099791bec7cc917af9
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
Reviewed-by: Lars Knoll <lars@knoll.priv.no>
(cherry picked from commit f0ae787ec3d087a8afac45b1473a22c535a44dc3)
Diffstat (limited to 'src/plugins/multimedia/gstreamer/mediacapture/qgstreamermediaencoder.cpp')
-rw-r--r-- | src/plugins/multimedia/gstreamer/mediacapture/qgstreamermediaencoder.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/plugins/multimedia/gstreamer/mediacapture/qgstreamermediaencoder.cpp b/src/plugins/multimedia/gstreamer/mediacapture/qgstreamermediaencoder.cpp index 9849d6d91..5f3631111 100644 --- a/src/plugins/multimedia/gstreamer/mediacapture/qgstreamermediaencoder.cpp +++ b/src/plugins/multimedia/gstreamer/mediacapture/qgstreamermediaencoder.cpp @@ -108,7 +108,7 @@ static GstEncodingContainerProfile *createContainerProfile(const QMediaEncoderSe { auto *formatInfo = QGstreamerIntegration::instance()->gstFormatsInfo(); - QGstMutableCaps caps = formatInfo->formatCaps(settings.fileFormat()); + auto caps = formatInfo->formatCaps(settings.fileFormat()); GstEncodingContainerProfile *profile = (GstEncodingContainerProfile *)gst_encoding_container_profile_new( "container_profile", @@ -122,7 +122,7 @@ static GstEncodingProfile *createVideoProfile(const QMediaEncoderSettings &setti { auto *formatInfo = QGstreamerIntegration::instance()->gstFormatsInfo(); - QGstMutableCaps caps = formatInfo->videoCaps(settings.mediaFormat()); + auto caps = formatInfo->videoCaps(settings.mediaFormat()); if (caps.isNull()) return nullptr; |