summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Blechmann <tim@klingt.org>2024-02-27 10:50:22 +0800
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2024-03-01 00:38:45 +0000
commitd12f948d8d51dfa49a598766d72fe774c71b8124 (patch)
tree4bd42eeb29f90de4c3d70faff623084a628b9e2f
parent2edc958669a83d49930ad78b1bc54502f6475fc8 (diff)
GStreamer: handle types - fix taglist/sample handles
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)
-rw-r--r--src/plugins/multimedia/gstreamer/audio/qgstreameraudiodecoder.cpp5
-rw-r--r--src/plugins/multimedia/gstreamer/common/qgst_handle_types_p.h8
2 files changed, 9 insertions, 4 deletions
diff --git a/src/plugins/multimedia/gstreamer/audio/qgstreameraudiodecoder.cpp b/src/plugins/multimedia/gstreamer/audio/qgstreameraudiodecoder.cpp
index 3cbbf2fd4..f77b7e2ce 100644
--- a/src/plugins/multimedia/gstreamer/audio/qgstreameraudiodecoder.cpp
+++ b/src/plugins/multimedia/gstreamer/audio/qgstreameraudiodecoder.cpp
@@ -375,7 +375,10 @@ QAudioBuffer QGstreamerAudioDecoder::read()
const char* bufferData = nullptr;
int bufferSize = 0;
- QGstSampleHandle sample{ gst_app_sink_pull_sample(m_appSink) };
+ QGstSampleHandle sample{
+ gst_app_sink_pull_sample(m_appSink),
+ QGstSampleHandle::HasRef,
+ };
GstBuffer *buffer = gst_sample_get_buffer(sample.get());
GstMapInfo mapInfo;
gst_buffer_map(buffer, &mapInfo, GST_MAP_READ);
diff --git a/src/plugins/multimedia/gstreamer/common/qgst_handle_types_p.h b/src/plugins/multimedia/gstreamer/common/qgst_handle_types_p.h
index 744b7ec98..0e3525c14 100644
--- a/src/plugins/multimedia/gstreamer/common/qgst_handle_types_p.h
+++ b/src/plugins/multimedia/gstreamer/common/qgst_handle_types_p.h
@@ -115,10 +115,10 @@ struct QGstTagListHandleTraits
gst_tag_list_unref(handle);
return true;
}
+ static Type ref(Type handle) noexcept { return gst_tag_list_ref(handle); }
};
struct QGstSampleHandleTraits
-
{
using Type = GstSample *;
static constexpr Type invalidValue() noexcept { return nullptr; }
@@ -127,6 +127,7 @@ struct QGstSampleHandleTraits
gst_sample_unref(handle);
return true;
}
+ static Type ref(Type handle) noexcept { return gst_sample_ref(handle); }
};
struct QUniqueGstStructureHandleTraits
@@ -199,14 +200,15 @@ struct QGstHandleHelper
} // namespace QGstImpl
-using QGstTagListHandle = QGstImpl::QGstHandleHelper<GstTagList>::UniqueHandle;
using QGstClockHandle = QGstImpl::QGstHandleHelper<GstClock>::UniqueHandle;
using QGstElementHandle = QGstImpl::QGstHandleHelper<GstElement>::UniqueHandle;
using QGstElementFactoryHandle = QGstImpl::QGstHandleHelper<GstElementFactory>::UniqueHandle;
using QGstDeviceHandle = QGstImpl::QGstHandleHelper<GstDevice>::SharedHandle;
using QGstDeviceMonitorHandle = QGstImpl::QGstHandleHelper<GstDeviceMonitor>::UniqueHandle;
using QGstBusHandle = QGstImpl::QGstHandleHelper<GstBus>::UniqueHandle;
-using QGstSampleHandle = QGstImpl::QGstHandleHelper<GstSample>::UniqueHandle;
+
+using QGstTagListHandle = QGstImpl::QSharedHandle<QGstImpl::QGstTagListHandleTraits>;
+using QGstSampleHandle = QGstImpl::QSharedHandle<QGstImpl::QGstSampleHandleTraits>;
using QUniqueGstStructureHandle = QUniqueHandle<QGstImpl::QUniqueGstStructureHandleTraits>;
using QUniqueGStringHandle = QUniqueHandle<QGstImpl::QUniqueGStringHandleTraits>;