45 if (!retriever.setDataSource(url))
49 if (!mimeType.isNull())
50 metadata.insert(QMediaMetaData::MediaType, mimeType);
53 || mimeType.startsWith(QStringLiteral(
"video"));
57 metadata.insert(QMediaMetaData::AlbumTitle, string);
61 metadata.insert(QMediaMetaData::AlbumArtist, string);
64 if (!string.isNull()) {
65 metadata.insert(isVideo ? QMediaMetaData::LeadPerformer
66 : QMediaMetaData::ContributingArtist,
67 string.split(QLatin1Char(
'/'), Qt::SkipEmptyParts));
72 metadata.insert(QMediaMetaData::Author, string.split(QLatin1Char(
'/'), Qt::SkipEmptyParts));
75 if (!string.isNull()) {
76 metadata.insert(isVideo ? QMediaMetaData::VideoBitRate
77 : QMediaMetaData::AudioBitRate,
83 metadata.insert(QMediaMetaData::TrackNumber, string.toInt());
87 metadata.insert(QMediaMetaData::Composer, string.split(QLatin1Char(
'/'), Qt::SkipEmptyParts));
91 metadata.insert(QMediaMetaData::Date, QDateTime::fromString(string, QStringLiteral(
"yyyyMMddTHHmmss.zzzZ")).date());
95 metadata.insert(QMediaMetaData::Duration, string.toLongLong());
98 if (!string.isNull()) {
100 if (string.startsWith(QLatin1Char(
'(')) && string.endsWith(QLatin1Char(
')'))) {
102 const int genreId = QStringView{string}.mid(1, string.length() - 2).toInt(&ok);
103 if (ok && genreId >= 0 && genreId <= 125)
104 string = QLatin1String(qt_ID3GenreNames[genreId]);
106 metadata.insert(QMediaMetaData::Genre, string);
110 if (!string.isNull())
111 metadata.insert(QMediaMetaData::Title, string);
114 if (!string.isNull()) {
115 const int height = string.toInt();
117 metadata.insert(QMediaMetaData::Resolution, QSize(width, height));
139 const QString &mimeType,
const QString &language)
140 : mTrackType(trackType),
141 mAndroidTrackType(androidTrackType),
142 mAndroidTrackNumber(androidTrackNumber)
144 insert(QMediaMetaData::MediaType, mimeType);
145 insert(QMediaMetaData::Language, getLocaleLanguage(language));