41QAudioDecoder::QAudioDecoder(QObject *parent) : QObject{ *
new QAudioDecoderPrivate, parent }
45 auto maybeDecoder = QPlatformMediaIntegration::instance()->createAudioDecoder(
this);
47 d->decoder.reset(maybeDecoder.value());
49 qWarning() <<
"Failed to initialize QAudioDecoder" << maybeDecoder.error();
158void QAudioDecoder::setSource(
const QUrl &fileName)
160 using namespace QtMultimediaPrivate;
167 d->decoder->clearError();
168 d->unresolvedUrl = fileName;
169 d->decoder->setSourceDevice(
nullptr);
174 if (!fileName.isEmpty() && fileName.scheme() == u"qrc" && !d->decoder->canReadQrc()) {
175 QFile file(u':' + fileName.path());
176 if (!file.open(QFile::ReadOnly)) {
177 d->decoder->error(QAudioDecoder::ResourceError,
178 tr(
"Attempting to play invalid Qt resource"));
182 auto qrcMedia = qCopyQrcToTemporaryFile(file, fileName);
184 d->decoder->error(QAudioDecoder::ResourceError, qrcMedia.error());
188 d->qrcFile = std::move(qrcMedia->file);
189 d->decoder->setSource(qrcMedia->url);
193 QUrl url = qMediaFromUserInput(fileName);
194 d->decoder->setSource(url);