Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qgst_bus_observer_p.h
Go to the documentation of this file.
1// Copyright (C) 2024 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QGST_BUS_OBSERVER_P_H
5#define QGST_BUS_OBSERVER_P_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include <QtCore/qsocketnotifier.h>
19#include <QtCore/qwineventnotifier.h>
20#include <QtCore/qmutex.h>
21
22#include "qgst_p.h"
24
26
28{
29public:
30 // returns true if message was processed and should be dropped, false otherwise
31 virtual bool processBusMessage(const QGstreamerMessage &message) = 0;
32};
33
35{
36public:
37 using QGstBusHandle::get;
38 using QGstBusHandle::HasRef;
40
42
48
49 void close();
50
53
54 bool processNextPendingMessage(GstMessageType type = GST_MESSAGE_ANY,
55 std::optional<std::chrono::nanoseconds> timeout = {});
56
58
59private:
60 void processAllPendingMessages();
61
62#ifndef Q_OS_WIN
63 QSocketNotifier m_socketNotifier{ QSocketNotifier::Read };
64#else
66#endif
67 QList<QGstreamerBusMessageFilter *> busFilters;
68};
69
70QT_END_NAMESPACE
71
72#endif // QGST_BUS_OBSERVER_P_H
The QAudioFormat class stores audio stream parameter information.
QGObjectHandlerConnection & operator=(const QGObjectHandlerConnection &)=default
QGObjectHandlerConnection & operator=(QGObjectHandlerConnection &&)=default
QGObjectHandlerConnection(QGstObject object, gulong handler)
Definition qgst.cpp:738
QGObjectHandlerConnection()=default
QGObjectHandlerConnection(const QGObjectHandlerConnection &)=default
QGObjectHandlerConnection(QGObjectHandlerConnection &&)=default
QGObjectHandlerScopedConnection(const QGObjectHandlerScopedConnection &)=delete
QGObjectHandlerScopedConnection & operator=(const QGObjectHandlerScopedConnection &)=delete
QGObjectHandlerScopedConnection(QGObjectHandlerScopedConnection &&)=default
QGObjectHandlerScopedConnection(QGObjectHandlerConnection connection)
Definition qgst.cpp:755
QGObjectHandlerScopedConnection & operator=(QGObjectHandlerScopedConnection &&)=default
std::optional< int > toInt64() const
Definition qgst.cpp:96
std::optional< QGRange< int > > toIntRange() const
Definition qgst.cpp:125
std::optional< int > toInt() const
Definition qgst.cpp:89
QList< QAudioFormat::SampleFormat > getSampleFormats() const
int listSize() const
Definition qgst.cpp:151
bool isList() const
Definition qgst.cpp:146
T * getPointer() const
Definition qgst_p.h:273
QGstStructureView toStructure() const
Definition qgst.cpp:132
std::optional< QGRange< float > > getFractionRange() const
Definition qgst.cpp:116
const char * toString() const
Definition qgst.cpp:103
const GValue * value
Definition qgst_p.h:265
std::optional< float > getFraction() const
Definition qgst.cpp:108
QGValue at(int index) const
Definition qgst.cpp:156
bool isNull() const
Definition qgst.cpp:77
QGstCaps toCaps() const
Definition qgst.cpp:139
std::optional< bool > toBool() const
Definition qgst.cpp:82
QGValue(const GValue *v)
Definition qgst.cpp:75
QGstSampleHandle pullSample()
Definition qgst.cpp:1484
void setCallbacks(GstAppSinkCallbacks &callbacks, gpointer user_data, GDestroyNotify notify)
Definition qgst.cpp:1478
GstAppSink * appSink() const
Definition qgst.cpp:1456
void setCaps(const QGstCaps &caps)
Definition qgst.cpp:1473
void setMaxBuffers(int)
Definition qgst.cpp:1468
QGstAppSink(const QGstAppSink &)=default
QGstAppSink(QGstAppSink &&) noexcept=default
static QGstAppSink create(const char *name)
Definition qgst.cpp:1447
QGstAppSink(GstAppSink *, RefMode)
Definition qgst.cpp:1439
QGstAppSink & operator=(QGstAppSink &&) noexcept=default
QGstAppSink & operator=(const QGstAppSink &)=default
static QGstAppSrc create(const char *name)
Definition qgst.cpp:1502
QGstAppSrc & operator=(const QGstAppSrc &)=default
GstFlowReturn pushBuffer(GstBuffer *)
Definition qgst.cpp:1522
QGstAppSrc(const QGstAppSrc &)=default
void setCallbacks(GstAppSrcCallbacks &callbacks, gpointer user_data, GDestroyNotify notify)
Definition qgst.cpp:1516
QGstAppSrc & operator=(QGstAppSrc &&) noexcept=default
QGstAppSrc(GstAppSrc *, RefMode)
Definition qgst.cpp:1494
QGstAppSrc(QGstAppSrc &&) noexcept=default
GstAppSrc * appSrc() const
Definition qgst.cpp:1511
void setSync(bool)
Definition qgst.cpp:1412
QGstBaseSink & operator=(const QGstBaseSink &)=default
QGstBaseSink(GstBaseSink *, RefMode)
Definition qgst.cpp:1404
QGstBaseSink(const QGstBaseSink &)=default
GstBaseSink * baseSink() const
Definition qgst.cpp:1417
QGstBaseSink(QGstBaseSink &&) noexcept=default
QGstBaseSink & operator=(QGstBaseSink &&) noexcept=default
QGstBaseSrc(QGstBaseSrc &&) noexcept=default
QGstBaseSrc & operator=(QGstBaseSrc &&) noexcept=default
QGstBaseSrc(const QGstBaseSrc &)=default
QGstBaseSrc & operator=(const QGstBaseSrc &)=default
QGstBaseSrc(GstBaseSrc *, RefMode)
Definition qgst.cpp:1424
GstBaseSrc * baseSrc() const
Definition qgst.cpp:1432
void addUnlinkedGhostPads(GstPadDirection)
Definition qgst.cpp:1356
QGstBin(QGstBin &&) noexcept=default
void dumpGraph(const char *fileNamePrefix, bool includeTimestamp=true) const
Definition qgst.cpp:1378
QGstBin & operator=(const QGstBin &)=default
QGstElement findByName(const char *)
Definition qgst.cpp:1389
void recalculateLatency()
Definition qgst.cpp:1397
GstBin * bin() const
Definition qgst.cpp:1341
static QGstBin create(const char *name)
Definition qgst.cpp:1288
void addGhostPad(const QGstElement &child, const char *name)
Definition qgst.cpp:1346
std::enable_if_t<(std::is_base_of_v< QGstElement, std::remove_reference_t< Ts > > &&...), void > stopAndRemoveElements(Ts &&...ts)
Definition qgst_p.h:839
QGstBin & operator=(QGstBin &&) noexcept=default
static QGstBin createFromPipelineDescription(const char *pipelineDescription, const char *name=nullptr, bool ghostUnlinkedPads=false)
Definition qgst.cpp:1309
QGstBin(const QGstBin &)=default
static QGstBin createFromFactory(const char *factory, const char *name)
Definition qgst.cpp:1293
std::enable_if_t<(std::is_base_of_v< QGstElement, Ts > &&...), void > add(const Ts &...ts)
Definition qgst_p.h:820
void addGhostPad(const char *name, const QGstPad &pad)
Definition qgst.cpp:1351
bool syncChildrenState()
Definition qgst.cpp:1373
QGstBin(GstBin *bin, RefMode mode=NeedsRef)
Definition qgst.cpp:1333
std::enable_if_t<(std::is_base_of_v< QGstElement, Ts > &&...), void > remove(const Ts &...ts)
Definition qgst_p.h:829
static QGstBin createFromPipelineDescription(const QByteArray &pipelineDescription, const char *name=nullptr, bool ghostUnlinkedPads=false)
Definition qgst.cpp:1303
void removeMessageFilter(QGstreamerBusMessageFilter *)
bool processNextPendingMessage(GstMessageType type=GST_MESSAGE_ANY, std::optional< std::chrono::nanoseconds > timeout={})
QGstBusObserver & operator=(const QGstBusObserver &)=delete
QGstBusObserver & operator=(QGstBusObserver &&)=delete
QGstBusObserver(QGstBusHandle)
bool currentThreadIsNotifierThread() const
QGstBusObserver(const QGstBusObserver &)=delete
void installMessageFilter(QGstreamerBusMessageFilter *)
QGstBusObserver(QGstBusObserver &&)=delete
void addPixelFormats(const QList< QVideoFrameFormat::PixelFormat > &formats, const char *modifier=nullptr)
Definition qgst.cpp:463
MemoryFormat memoryFormat() const
Definition qgst.cpp:539
QGstCaps & operator=(QGstCaps &&) noexcept=default
int size() const
Definition qgst.cpp:549
static QGstCaps fromCameraFormat(const QCameraFormat &format)
Definition qgst.cpp:510
static QGstCaps create()
Definition qgst.cpp:566
GstCaps * caps() const
Definition qgst.cpp:561
void setResolution(QSize)
Definition qgst.cpp:496
QGstCaps & operator=(const QGstCaps &)=default
MemoryFormat
Definition qgst_p.h:343
@ DMABuf
Definition qgst_p.h:343
@ CpuMemory
Definition qgst_p.h:343
@ GLTexture
Definition qgst_p.h:343
QGstCaps(const QGstCaps &)=default
QGstCaps copy() const
Definition qgst.cpp:531
QGstCaps(QGstCaps &&) noexcept=default
QGstStructureView at(int index) const
Definition qgst.cpp:554
QGstClock(GstClock *clock, RefMode mode)
Definition qgst.cpp:916
GstClockTime time() const
Definition qgst.cpp:929
QGstClock()=default
GstClock * clock() const
Definition qgst.cpp:924
QGstClock(const QGstObject &o)
Definition qgst.cpp:908
void setBaseTime(GstClockTime time) const
Definition qgst.cpp:1201
GstStateChangeReturn setState(GstState state)
Definition qgst.cpp:1060
static QGstElement createFromFactory(const QGstElementFactoryHandle &, const char *name=nullptr)
Definition qgst.cpp:969
std::optional< std::chrono::nanoseconds > position() const
Definition qgst.cpp:1157
static QGstElement createFromDevice(const QGstDeviceHandle &, const char *name=nullptr)
Definition qgst.cpp:975
QGstElement & operator=(QGstElement &&) noexcept=default
QGObjectHandlerConnection onPadRemoved(T *instance)
Definition qgst_p.h:620
GstElement * element() const
Definition qgst.cpp:1206
static QGstElementFactoryHandle findFactory(const QByteArray &name)
Definition qgst.cpp:1015
void removeFromParent()
Definition qgst.cpp:1261
QGstElement(GstElement *element, RefMode mode)
Definition qgst.cpp:936
void lockState(bool locked)
Definition qgst.cpp:1118
QGstElement(const QGstElement &)=default
QGstBin getRootBin() const
Definition qgst.cpp:1227
QGstPad getRequestPad(const char *name) const
Definition qgst.cpp:1035
QGstElement(QGstElement &&) noexcept=default
bool waitForAsyncStateChangeComplete(std::chrono::nanoseconds timeout=std::chrono::seconds(5)) const
Definition qgst.cpp:1105
std::optional< bool > canSeek() const
Definition qgst.cpp:1180
std::optional< std::chrono::nanoseconds > duration() const
Definition qgst.cpp:1138
bool finishStateChange(std::chrono::nanoseconds timeout=std::chrono::seconds(5))
Definition qgst.cpp:1084
bool setStateSync(GstState state, std::chrono::nanoseconds timeout=std::chrono::seconds(1))
Definition qgst.cpp:1065
bool isStateLocked() const
Definition qgst.cpp:1123
void sendEvent(GstEvent *event) const
Definition qgst.cpp:1128
void dumpPipelineGraph(const char *filename) const
Definition qgst.cpp:1267
QGstElement & operator=(const QGstElement &)=default
GstClockTime baseTime() const
Definition qgst.cpp:1196
static QGstElement createFromPipelineDescription(const QByteArray &)
Definition qgst.cpp:1002
void releaseRequestPad(const QGstPad &pad) const
Definition qgst.cpp:1040
static QGstElement createFromFactory(GstElementFactory *, const char *name=nullptr)
Definition qgst.cpp:961
bool syncStateWithParent()
Definition qgst.cpp:1078
static QGstElement createFromDevice(GstDevice *, const char *name=nullptr)
Definition qgst.cpp:980
QGstPad sink() const
Definition qgst.cpp:1030
QGstPad staticPad(const char *name) const
Definition qgst.cpp:1020
void sendEos() const
Definition qgst.cpp:1133
QGstBin getParentBin() const
Definition qgst.cpp:1219
std::optional< std::chrono::milliseconds > positionInMs() const
Definition qgst.cpp:1171
QGObjectHandlerConnection onPadAdded(T *instance)
Definition qgst_p.h:606
static QGstElement createFromFactory(const char *factory, const char *name=nullptr)
Definition qgst.cpp:944
bool hasAsyncStateChange(std::chrono::nanoseconds timeout=std::chrono::seconds(0)) const
Definition qgst.cpp:1097
static QGstElementFactoryHandle findFactory(const char *)
Definition qgst.cpp:1007
QGstElement getParent() const
Definition qgst.cpp:1211
QGObjectHandlerConnection onNoMorePads(T *instance)
Definition qgst_p.h:634
QGstPipeline getPipeline() const
Definition qgst.cpp:1247
static QGstElement createFromPipelineDescription(const char *)
Definition qgst.cpp:988
GstState state(std::chrono::nanoseconds timeout=std::chrono::seconds(0)) const
Definition qgst.cpp:1045
QGstPad src() const
Definition qgst.cpp:1025
std::optional< std::chrono::milliseconds > durationInMs() const
Definition qgst.cpp:1148
T * getObject(const char *property) const
Definition qgst_p.h:434
void set(const char *property, double d)
Definition qgst.cpp:603
QGObjectHandlerConnection connect(const char *name, GCallback callback, gpointer userData)
Definition qgst.cpp:698
void * getObject(const char *property) const
Definition qgst.cpp:693
double getDouble(const char *property) const
Definition qgst.cpp:679
QGstObject & operator=(const QGstObject &)=default
int getInt(const char *property) const
Definition qgst.cpp:651
void set(const char *property, int32_t i)
Definition qgst.cpp:588
QLatin1StringView name() const
Definition qgst.cpp:729
void set(const char *property, const QGstObject &o)
Definition qgst.cpp:608
static void qDeleteFromVoidPointer(void *ptr)
Definition qgst_p.h:416
QGString getString(const char *property) const
Definition qgst.cpp:623
void disconnect(gulong handlerId)
Definition qgst.cpp:707
QGstObject getGstObject(const char *property) const
Definition qgst.cpp:686
QLatin1StringView typeName() const
Definition qgst.cpp:717
void set(const char *property, const char *str)
Definition qgst.cpp:573
bool getBool(const char *property) const
Definition qgst.cpp:637
GType type() const
Definition qgst.cpp:712
QGstObject & operator=(QGstObject &&) noexcept=default
void set(const char *property, void *object, GDestroyNotify destroyFunction)
Definition qgst.cpp:618
void set(const char *property, std::unique_ptr< Object > object)
Definition qgst_p.h:410
void set(const char *property, Object *object, GDestroyNotify destroyFunction)
Definition qgst_p.h:404
void set(const char *property, bool b)
Definition qgst.cpp:578
QGstObject(const QGstObject &)=default
quint64 getUInt64(const char *property) const
Definition qgst.cpp:658
QGstStructureView getStructure(const char *property) const
Definition qgst.cpp:630
qint64 getInt64(const char *property) const
Definition qgst.cpp:665
void set(const char *property, const QGstCaps &c)
Definition qgst.cpp:613
float getFloat(const char *property) const
Definition qgst.cpp:672
QGstObject(QGstObject &&) noexcept=default
uint getUInt(const char *property) const
Definition qgst.cpp:644
GstObject * object() const
Definition qgst.cpp:724
bool link(const QGstPad &sink) const
Definition qgst.cpp:835
GstEvent * stickyEvent(GstEventType type)
Definition qgst.cpp:869
void modifyPipelineInIdleProbe(Functor &&f)
Definition qgst_p.h:743
QGstTagListHandle tags() const
Definition qgst.cpp:801
QGstPad & operator=(QGstPad &&) noexcept=default
QGstPad(const QGstObject &o)
Definition qgst.cpp:775
bool isLinked() const
Definition qgst.cpp:830
bool unlinkPeer() const
Definition qgst.cpp:845
QGstPad(const QGstPad &)=default
QGstCaps queryCaps() const
Definition qgst.cpp:796
void doInIdleProbe(Functor &&work)
Definition qgst_p.h:678
GstPad * pad() const
Definition qgst.cpp:864
QGstPad(GstPad *pad, RefMode mode)
Definition qgst.cpp:783
QGstPad(QGstPad &&) noexcept=default
void sendFlushIfPaused()
Definition qgst.cpp:894
void sendFlushStartStop(bool resetTime)
Definition qgst.cpp:879
QGString streamId() const
Definition qgst.cpp:808
QGstPad & operator=(const QGstPad &)=default
void addProbe(T *instance, GstPadProbeType type)
Definition qgst_p.h:668
std::optional< QPlatformMediaPlayer::TrackType > inferTrackTypeFromName() const
Definition qgst.cpp:815
void addEosProbe(T *instance)
Definition qgst_p.h:731
bool sendEvent(GstEvent *event)
Definition qgst.cpp:874
QGstCaps currentCaps() const
Definition qgst.cpp:791
QGstElement parent() const
Definition qgst.cpp:859
bool unlink(const QGstPad &sink) const
Definition qgst.cpp:840
QGstPad peer() const
Definition qgst.cpp:854
QGstStructureView(const QUniqueGstStructureHandle &)
Definition qgst.cpp:165
bool isNull() const
Definition qgst.cpp:175
QGRange< float > frameRateRange() const
Definition qgst.cpp:243
QSize nativeSize() const
Definition qgst.cpp:348
QGValue operator[](const char *fieldname) const
Definition qgst.cpp:185
QVideoFrameFormat::PixelFormat pixelFormat() const
Definition qgst.cpp:220
const GstStructure * structure
Definition qgst_p.h:298
QUniqueGstStructureHandle clone() const
Definition qgst.cpp:170
std::optional< QGRange< QSize > > resolutionRange() const
Definition qgst.cpp:301
QGstreamerMessage getMessage()
Definition qgst.cpp:327
QGstCaps caps() const
Definition qgst.cpp:190
std::optional< Fraction > pixelAspectRatio() const
Definition qgst.cpp:334
QGstTagListHandle tags() const
Definition qgst.cpp:195
QSize resolution() const
Definition qgst.cpp:206
QByteArrayView name() const
Definition qgst.cpp:180
QGstStructureView(const GstStructure *)
Definition qgst.cpp:163
void setSourceDevice(QIODevice *device) override
QAudioFormat audioFormat() const override
QIODevice * sourceDevice() const override
void setSource(const QUrl &fileName) override
qint64 duration() const override
static q23::expected< QPlatformAudioDecoder *, QString > create(QAudioDecoder *parent)
void setAudioFormat(const QAudioFormat &format) override
QAudioBuffer read() override
qint64 position() const override
bool processBusMessage(const QGstreamerMessage &message) override
bool canReadQrc() const override
virtual bool processBusMessage(const QGstreamerMessage &message)=0
QGstCaps capsForAudioFormat(const QAudioFormat &format)
Definition qgstutils.cpp:83
Combined button and popup list for selecting options.
DestinationType * qGstCheckedCast(SourceType *arg)
Definition qgst_p.h:166
#define QGST_DEFINE_CAST_TRAITS(ClassName, MACRO_LABEL)
Definition qgst_p.h:63
void qForeachStreamInCollection(GstStreamCollection *collection, Functor &&f)
Definition qgst_p.h:962
std::enable_if_t<(std::is_base_of_v< QGstElement, Ts > &&...), void > qLinkGstElements(const Ts &...ts)
Definition qgst_p.h:773
GstClockTime qGstClockTimeFromChrono(std::chrono::nanoseconds ns)
Definition qgst_p.h:941
bool qIsGstObjectOfType(SourceType *arg)
Definition qgst_p.h:150
DestinationType * qGstSafeCast(SourceType *arg)
Definition qgst_p.h:157
std::enable_if_t<(std::is_base_of_v< QGstElement, Ts > &&...), void > qUnlinkGstElements(const Ts &...ts)
Definition qgst_p.h:792
QString qGstErrorMessageCannotFindElement(std::string_view element)
Definition qgst.cpp:1527
std::optional< QString > qGstErrorMessageIfElementsNotAvailable(const Arg &arg, Args... args)
Definition qgst_p.h:949
#define QGST_DEFINE_CAST_TRAITS_FOR_INTERFACE(ClassName, MACRO_LABEL)
Definition qgst_p.h:86
void qForeachStreamInCollection(const QGstStreamCollectionHandle &collection, Functor &&f)
Definition qgst_p.h:970
@ GST_PLAY_FLAG_AUDIO
@ GST_PLAY_FLAG_SOFT_VOLUME
@ GST_PLAY_FLAG_DOWNLOAD
@ GST_PLAY_FLAG_BUFFERING
@ GST_PLAY_FLAG_NATIVE_AUDIO
@ GST_PLAY_FLAG_NATIVE_VIDEO
@ GST_PLAY_FLAG_VIDEO
QCompactGstMessageAdaptor(const QGstreamerMessage &m)
T min
Definition qgst_p.h:181
T max
Definition qgst_p.h:182
bool operator==(const QGRange &rhs) const
Definition qgst_p.h:187
friend bool operator<(const QGString &lhs, const QGString &rhs)
Definition qgst_p.h:235
friend bool operator<(const QLatin1StringView lhs, const QGString &rhs)
Definition qgst_p.h:247
bool operator==(const QGString &str) const
Definition qgst_p.h:227
QString toQString() const
Definition qgst_p.h:200
bool operator!=(const QLatin1StringView str) const
Definition qgst_p.h:232
bool operator!=(const QGString &str) const
Definition qgst_p.h:231
QLatin1StringView asStringView() const
Definition qgst_p.h:198
friend bool operator<(const QGString &lhs, const QLatin1StringView rhs)
Definition qgst_p.h:239
bool operator==(const QLatin1StringView str) const
Definition qgst_p.h:228
QByteArrayView asByteArrayView() const
Definition qgst_p.h:199
static constexpr Type invalidValue() noexcept
static Type ref(Type handle) noexcept
static bool unref(Type handle) noexcept
static bool unref(Type handle) noexcept
static constexpr Type invalidValue() noexcept
static Type ref(Type handle) noexcept
static constexpr Type invalidValue() noexcept
static bool unref(Type handle) noexcept
static constexpr Type invalidValue() noexcept
static Type ref(Type handle) noexcept
static constexpr Type invalidValue() noexcept
static bool unref(Type handle) noexcept
static Type ref(Type handle) noexcept
static bool close(Type handle) noexcept
static constexpr Type invalidValue() noexcept
static bool close(Type handle) noexcept
static constexpr Type invalidValue() noexcept
static constexpr Type invalidValue() noexcept
static bool close(Type handle) noexcept
static constexpr Type invalidValue() noexcept
static bool close(Type handle) noexcept
static constexpr Type invalidValue() noexcept
Definition qgst_p.h:323
static bool unref(GstCaps *arg) noexcept
Definition qgst_p.h:325
static GstCaps * ref(GstCaps *arg) noexcept
Definition qgst_p.h:324
static bool unref(GstObject *arg) noexcept
Definition qgst_p.h:371
static GstObject * ref(GstObject *arg) noexcept
Definition qgst_p.h:366
static constexpr Type invalidValue() noexcept
Definition qgst_p.h:365
result_type operator()(const argument_type &e) const noexcept
Definition qgst_p.h:984