Revision control

++ // Copyright (C) 2016 The Qt Company Ltd.
++ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
++
++ #include "qgstreameraudiodevice_p.h"
++
++ #include <common/qgst_p.h>
++ #include <common/qgstutils_p.h>
++ #include <private/qplatformmediaintegration_p.h>
++
++ QT_BEGIN_NAMESPACE
++
++ QGStreamerCustomAudioDeviceInfo::QGStreamerCustomAudioDeviceInfo(const QByteArray &gstreamerPipeline,
++ QAudioDevice::Mode mode)
++ : QAudioDevicePrivate{
++ gstreamerPipeline,
++ mode,
++ QString::fromUtf8(gstreamerPipeline),
++ false,
++ std::future<QAudioDevicePrivate::AudioDeviceFormat>{} // invalid future - format not predetermined
++ }
++ {
++ }
++
++ QAudioDevice qMakeCustomGStreamerAudioInput(const QByteArray &gstreamerPipeline)
++ {
++ auto deviceInfo = std::make_unique<QGStreamerCustomAudioDeviceInfo>(gstreamerPipeline,
++ QAudioDevice::Mode::Input);
++
++ return QAudioDevicePrivate::createQAudioDevice(std::move(deviceInfo));
++ }
++
++ QAudioDevice qMakeCustomGStreamerAudioOutput(const QByteArray &gstreamerPipeline)
++ {
++ auto deviceInfo = std::make_unique<QGStreamerCustomAudioDeviceInfo>(gstreamerPipeline,
++ QAudioDevice::Mode::Output);
++
++ return QAudioDevicePrivate::createQAudioDevice(std::move(deviceInfo));
++ }
++
++ bool isCustomAudioDevice(const QAudioDevicePrivate *device)
++ {
++ return dynamic_cast<const QGStreamerCustomAudioDeviceInfo *>(device);
++ }
++
++ bool isCustomAudioDevice(const QAudioDevice &device)
++ {
++ return isCustomAudioDevice(QAudioDevicePrivate::handle(device));
++ }
++
++ QT_END_NAMESPACE