diff options
author | Piotr Srebrny <piotr.srebrny@qt.io> | 2022-09-07 15:08:58 +0200 |
---|---|---|
committer | Piotr Srebrny <piotr.srebrny@qt.io> | 2022-10-10 09:53:52 +0200 |
commit | bf4e6b506583170f1f86eb408ab01b5846b7a96d (patch) | |
tree | 3fa98757619bcb2186664311d08486d62d06fa5e /src/plugins/multimedia/gstreamer/audio/qgstreameraudiodecoder_p.h | |
parent | 6fae541a2015c329942f6c2a96fc3b1de3f14a7a (diff) |
Validate that gstreamer elements necessary for operation are available
This patch validates that all elements that are necessary to run
the requested functionality are available. Instead of running
constructors directly, the patch uses a static create() function for
each class. This function first tries to instantiate all necessary
GStreamer plugins and then pass them to the class constructor.
If some element is missing the function returns an error message
describing the element.
Pick-to: 6.4
Fixes: QTBUG-106257
Change-Id: I2b9db3f509e9ad5b760fcc251e634a01c687b790
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
Reviewed-by: Lars Knoll <lars@knoll.priv.no>
Diffstat (limited to 'src/plugins/multimedia/gstreamer/audio/qgstreameraudiodecoder_p.h')
-rw-r--r-- | src/plugins/multimedia/gstreamer/audio/qgstreameraudiodecoder_p.h | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/plugins/multimedia/gstreamer/audio/qgstreameraudiodecoder_p.h b/src/plugins/multimedia/gstreamer/audio/qgstreameraudiodecoder_p.h index ec4ede00d..5a37f8b2a 100644 --- a/src/plugins/multimedia/gstreamer/audio/qgstreameraudiodecoder_p.h +++ b/src/plugins/multimedia/gstreamer/audio/qgstreameraudiodecoder_p.h @@ -20,7 +20,8 @@ #include <QtCore/qmutex.h> #include <QtCore/qurl.h> -#include "private/qplatformaudiodecoder_p.h" +#include <private/qplatformaudiodecoder_p.h> +#include <private/qmultimediautils_p.h> #include <qgstpipeline_p.h> #include "qaudiodecoder.h" @@ -42,7 +43,7 @@ class QGstreamerAudioDecoder Q_OBJECT public: - QGstreamerAudioDecoder(QAudioDecoder *parent); + static QMaybe<QPlatformAudioDecoder *> create(QAudioDecoder *parent); virtual ~QGstreamerAudioDecoder(); QUrl source() const override; @@ -77,6 +78,8 @@ private slots: void updateDuration(); private: + QGstreamerAudioDecoder(QGstPipeline playbin, QGstElement audioconvert, QAudioDecoder *parent); + void setAudioFlags(bool wantNativeAudio); void addAppSink(); void removeAppSink(); |