diff options
author | Tim Blechmann <tim@klingt.org> | 2024-02-27 10:50:22 +0800 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2024-03-01 00:38:45 +0000 |
commit | d12f948d8d51dfa49a598766d72fe774c71b8124 (patch) | |
tree | 4bd42eeb29f90de4c3d70faff623084a628b9e2f | |
parent | 2edc958669a83d49930ad78b1bc54502f6475fc8 (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.cpp | 5 | ||||
-rw-r--r-- | src/plugins/multimedia/gstreamer/common/qgst_handle_types_p.h | 8 |
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>; |