diff options
Diffstat (limited to 'src/plugins/multimedia/gstreamer/common/qgstreameraudiooutput.cpp')
-rw-r--r-- | src/plugins/multimedia/gstreamer/common/qgstreameraudiooutput.cpp | 41 |
1 files changed, 33 insertions, 8 deletions
diff --git a/src/plugins/multimedia/gstreamer/common/qgstreameraudiooutput.cpp b/src/plugins/multimedia/gstreamer/common/qgstreameraudiooutput.cpp index 9891e0b6c..4d43226d2 100644 --- a/src/plugins/multimedia/gstreamer/common/qgstreameraudiooutput.cpp +++ b/src/plugins/multimedia/gstreamer/common/qgstreameraudiooutput.cpp @@ -14,20 +14,45 @@ #include <sys/stat.h> #include <fcntl.h> +#include <utility> + Q_LOGGING_CATEGORY(qLcMediaAudioOutput, "qt.multimedia.audiooutput") QT_BEGIN_NAMESPACE -QGstreamerAudioOutput::QGstreamerAudioOutput(QAudioOutput *parent) - : QObject(parent), - QPlatformAudioOutput(parent), - gstAudioOutput("audioOutput") +QMaybe<QPlatformAudioOutput *> QGstreamerAudioOutput::create(QAudioOutput *parent) +{ + QGstElement audioconvert("audioconvert", "audioConvert"); + if (!audioconvert) + return errorMessageCannotFindElement("audioconvert"); + + QGstElement audioresample("audioresample", "audioResample"); + if (!audioresample) + return errorMessageCannotFindElement("audioresample"); + + QGstElement volume("volume", "volume"); + if (!volume) + return errorMessageCannotFindElement("volume"); + + QGstElement autoaudiosink("autoaudiosink", "autoAudioSink"); + if (!autoaudiosink) + return errorMessageCannotFindElement("autoaudiosink"); + + return new QGstreamerAudioOutput(audioconvert, audioresample, volume, autoaudiosink, parent); +} + +QGstreamerAudioOutput::QGstreamerAudioOutput(QGstElement audioconvert, QGstElement audioresample, + QGstElement volume, QGstElement autoaudiosink, + QAudioOutput *parent) + : QObject(parent), + QPlatformAudioOutput(parent), + gstAudioOutput("audioOutput"), + audioConvert(std::move(audioconvert)), + audioResample(std::move(audioresample)), + audioVolume(std::move(volume)), + audioSink(std::move(autoaudiosink)) { audioQueue = QGstElement("queue", "audioQueue"); - audioConvert = QGstElement("audioconvert", "audioConvert"); - audioResample = QGstElement("audioresample", "audioResample"); - audioVolume = QGstElement("volume", "volume"); - audioSink = QGstElement("autoaudiosink", "autoAudioSink"); gstAudioOutput.add(audioQueue, audioConvert, audioResample, audioVolume, audioSink); audioQueue.link(audioConvert, audioResample, audioVolume, audioSink); |