1 /* 2 SPDX-FileCopyrightText: 2016 Andreas Cord-Landwehr <cordlandwehr@kde.org> 3 4 SPDX-License-Identifier: LGPL-2.1-or-later 5 */ 6 7 #include "qtmultimediacapturebackend.h" 8 9 #include "libsound_debug.h" 10 11 #include <QUrl> 12 13 #include <KLocalizedString> 14 QtMultimediaCaptureBackend(QObject * parent)15QtMultimediaCaptureBackend::QtMultimediaCaptureBackend(QObject *parent) 16 : CaptureBackendInterface(parent) 17 { 18 QAudioEncoderSettings audioSettings; 19 20 QStringList availableCodecs = m_recorder.supportedAudioCodecs(); 21 if (availableCodecs.contains(QLatin1String("audio/x-vorbis"))) { 22 audioSettings.setCodec(QStringLiteral("audio/x-vorbis")); 23 } else if (availableCodecs.contains(QLatin1String("audio/vorbis"))) { 24 audioSettings.setCodec(QStringLiteral("audio/vorbis")); 25 } else { 26 qCWarning(LIBSOUND_LOG()) << "No vorbis codec was found for recordings"; 27 audioSettings.setCodec(availableCodecs.first()); 28 } 29 qCDebug(LIBSOUND_LOG()) << "recording codec set to" << audioSettings.codec(); 30 31 audioSettings.setQuality(QMultimedia::HighQuality); 32 m_recorder.setAudioSettings(audioSettings); 33 } 34 captureState() const35CaptureDeviceController::State QtMultimediaCaptureBackend::captureState() const 36 { 37 switch (m_recorder.state()) { 38 case QMediaRecorder::StoppedState: 39 return CaptureDeviceController::StoppedState; 40 case QMediaRecorder::RecordingState: 41 return CaptureDeviceController::RecordingState; 42 case QMediaRecorder::PausedState: 43 return CaptureDeviceController::PausedState; 44 } 45 Q_UNREACHABLE(); 46 return CaptureDeviceController::StoppedState; 47 } 48 startCapture(const QString & filePath)49void QtMultimediaCaptureBackend::startCapture(const QString &filePath) 50 { 51 m_recorder.setOutputLocation(QUrl::fromLocalFile(filePath)); 52 m_recorder.record(); 53 } 54 stopCapture()55void QtMultimediaCaptureBackend::stopCapture() 56 { 57 m_recorder.stop(); 58 } 59 devices() const60QStringList QtMultimediaCaptureBackend::devices() const 61 { 62 return m_recorder.audioInputs(); 63 } 64 setDevice(const QString & deviceIdentifier)65void QtMultimediaCaptureBackend::setDevice(const QString &deviceIdentifier) 66 { 67 if (devices().contains(deviceIdentifier)) { 68 m_recorder.setAudioInput(deviceIdentifier); 69 } else { 70 qCDebug(LIBSOUND_LOG) << "Could not set unknown capture device:" << deviceIdentifier; 71 } 72 } 73