127 qCDebug(qLcAudioDecoder) <<
"start";
128 auto checkNoError = [
this]() {
129 if (error() == QAudioDecoder::NoError)
141 m_decoder = std::make_unique<AudioDecoder>(m_audioFormat, defaultOptions);
142 connect(m_decoder.get(), &AudioDecoder::errorOccured,
this, &QFFmpegAudioDecoder::errorSignal);
143 connect(m_decoder.get(), &AudioDecoder::endOfStream,
this, &QFFmpegAudioDecoder::done);
144 connect(m_decoder.get(), &AudioDecoder::newAudioBuffer,
this,
145 &QFFmpegAudioDecoder::newAudioBuffer);
147 QFFmpeg::MediaDataHolder::Maybe media =
148 QFFmpeg::MediaDataHolder::create(m_url, m_sourceDevice, defaultOptions,
nullptr);
151 Q_ASSERT(media.value());
152 if (media.value()->streamInfo(QPlatformMediaPlayer::AudioStream).isEmpty())
153 error(QAudioDecoder::FormatError,
154 QLatin1String(
"The media doesn't contain an audio stream"));
156 m_decoder->setMedia(std::move(*media.value()));
158 auto [code, description] = media.error();
159 errorSignal(code, description);
165 m_decoder->setState(QMediaPlayer::PausedState);
169 m_decoder->nextBuffer();
173 durationChanged(QFFmpeg::toUserDuration(m_decoder->duration()).get());
233 switch (QMediaPlayer::Error(err)) {
234 case QMediaPlayer::NoError:
235 error(QAudioDecoder::NoError, errorString);
237 case QMediaPlayer::ResourceError:
238 error(QAudioDecoder::ResourceError, errorString);
240 case QMediaPlayer::FormatError:
241 error(QAudioDecoder::FormatError, errorString);
243 case QMediaPlayer::NetworkError:
245 case QMediaPlayer::AccessDeniedError:
246 error(QAudioDecoder::AccessDeniedError, errorString);