124 qCDebug(qLcAudioDecoder) <<
"start";
125 auto checkNoError = [
this]() {
126 if (error() == QAudioDecoder::NoError)
138 m_decoder = std::make_unique<AudioDecoder>(m_audioFormat, defaultOptions);
139 connect(m_decoder.get(), &AudioDecoder::errorOccured,
this, &QFFmpegAudioDecoder::errorSignal);
140 connect(m_decoder.get(), &AudioDecoder::endOfStream,
this, &QFFmpegAudioDecoder::done);
141 connect(m_decoder.get(), &AudioDecoder::newAudioBuffer,
this,
142 &QFFmpegAudioDecoder::newAudioBuffer);
144 QFFmpeg::MediaDataHolder::Maybe media =
145 QFFmpeg::MediaDataHolder::create(m_url, m_sourceDevice, defaultOptions,
nullptr);
148 Q_ASSERT(media.value());
149 if (media.value()->streamInfo(QPlatformMediaPlayer::AudioStream).isEmpty())
150 error(QAudioDecoder::FormatError,
151 QLatin1String(
"The media doesn't contain an audio stream"));
153 m_decoder->setMedia(std::move(*media.value()));
155 auto [code, description] = media.error();
156 errorSignal(code, description);
162 m_decoder->setState(QMediaPlayer::PausedState);
166 m_decoder->nextBuffer();
170 durationChanged(QFFmpeg::toUserDuration(m_decoder->duration()).get());
230 switch (QMediaPlayer::Error(err)) {
231 case QMediaPlayer::NoError:
232 error(QAudioDecoder::NoError, errorString);
234 case QMediaPlayer::ResourceError:
235 error(QAudioDecoder::ResourceError, errorString);
237 case QMediaPlayer::FormatError:
238 error(QAudioDecoder::FormatError, errorString);
240 case QMediaPlayer::NetworkError:
242 case QMediaPlayer::AccessDeniedError:
243 error(QAudioDecoder::AccessDeniedError, errorString);