35 { AVMetadataCommonIdentifierTitle, AVMetadataIdentifieriTunesMetadataSongName,
36 AVMetadataIdentifierQuickTimeMetadataTitle,
37 AVMetadataIdentifierID3MetadataTitleDescription,
38 nil, AVMetadata3GPUserDataKeyTitle },
40 { AVMetadataCommonIdentifierAuthor,AVMetadataIdentifieriTunesMetadataAuthor,
41 AVMetadataIdentifierQuickTimeMetadataAuthor, nil,
42 AVMetadataQuickTimeUserDataKeyAuthor, AVMetadata3GPUserDataKeyAuthor },
44 { nil, AVMetadataIdentifieriTunesMetadataUserComment,
45 AVMetadataIdentifierQuickTimeMetadataComment, AVMetadataIdentifierID3MetadataComments,
46 AVMetadataQuickTimeUserDataKeyComment, nil },
48 { AVMetadataCommonIdentifierDescription,AVMetadataIdentifieriTunesMetadataDescription,
49 AVMetadataIdentifierQuickTimeMetadataDescription, nil,
50 AVMetadataQuickTimeUserDataKeyDescription, AVMetadata3GPUserDataKeyDescription },
52 { nil, AVMetadataIdentifieriTunesMetadataUserGenre,
53 AVMetadataIdentifierQuickTimeMetadataGenre, nil,
54 AVMetadataQuickTimeUserDataKeyGenre, AVMetadata3GPUserDataKeyGenre },
56 { AVMetadataCommonIdentifierCreationDate, AVMetadataIdentifieriTunesMetadataReleaseDate,
57 AVMetadataIdentifierQuickTimeMetadataCreationDate, AVMetadataIdentifierID3MetadataDate,
58 AVMetadataQuickTimeUserDataKeyCreationDate, AVMetadataISOUserDataKeyDate },
60 { AVMetadataCommonIdentifierLanguage, nil, nil, AVMetadataIdentifierID3MetadataLanguage, nil, nil },
62 { AVMetadataCommonIdentifierPublisher, AVMetadataIdentifieriTunesMetadataPublisher,
63 AVMetadataIdentifierQuickTimeMetadataPublisher, AVMetadataIdentifierID3MetadataPublisher, nil, nil },
65 { AVMetadataCommonIdentifierCopyrights, AVMetadataIdentifieriTunesMetadataCopyright,
66 AVMetadataIdentifierQuickTimeMetadataCopyright, AVMetadataIdentifierID3MetadataCopyright,
67 AVMetadataQuickTimeUserDataKeyCopyright, AVMetadataISOUserDataKeyCopyright },
69 { nil, nil, nil, AVMetadataIdentifierID3MetadataOfficialAudioSourceWebpage, nil, nil },
71 { nil, nil, nil, AVMetadataIdentifierID3MetadataLength, nil, nil },
73 { AVMetadataCommonIdentifierType, nil, nil, AVMetadataIdentifierID3MetadataContentType, nil, nil },
75 { nil, nil, nil, AVMetadataIdentifierID3MetadataFileType, nil, nil },
77 { nil, nil, nil, nil, nil, nil },
79 { nil, nil, nil, nil, nil, nil },
81 { nil, nil, nil, nil, nil, nil },
83 { nil, nil, nil, nil, nil, nil },
85 { nil, nil, AVMetadataIdentifierQuickTimeMetadataCameraFrameReadoutTime, nil, nil, nil },
87 { AVMetadataCommonIdentifierAlbumName, AVMetadataIdentifieriTunesMetadataAlbum,
88 AVMetadataIdentifierQuickTimeMetadataAlbum, AVMetadataIdentifierID3MetadataAlbumTitle,
89 AVMetadataQuickTimeUserDataKeyAlbum, AVMetadata3GPUserDataKeyAlbumAndTrack },
91 { nil, AVMetadataIdentifieriTunesMetadataAlbumArtist, nil, nil,
92 AVMetadataQuickTimeUserDataKeyArtist, AVMetadata3GPUserDataKeyPerformer },
94 { AVMetadataCommonIdentifierArtist, AVMetadataIdentifieriTunesMetadataArtist,
95 AVMetadataIdentifierQuickTimeMetadataArtist, nil, nil, nil },
97 { nil, AVMetadataIdentifieriTunesMetadataTrackNumber,
98 nil, AVMetadataIdentifierID3MetadataTrackNumber, nil, nil },
100 { nil, AVMetadataIdentifieriTunesMetadataComposer,
101 AVMetadataIdentifierQuickTimeMetadataComposer, AVMetadataIdentifierID3MetadataComposer, nil, nil },
103 { nil, AVMetadataIdentifieriTunesMetadataPerformer,
104 AVMetadataIdentifierQuickTimeMetadataPerformer, AVMetadataIdentifierID3MetadataLeadPerformer, nil, nil },
106 { nil, nil, nil, AVMetadataIdentifierID3MetadataAttachedPicture, nil, nil },
108 { AVMetadataCommonIdentifierArtwork, AVMetadataIdentifieriTunesMetadataCoverArt,
109 AVMetadataIdentifierQuickTimeMetadataArtwork, nil, nil, nil },
111 { nil, nil, AVMetadataIdentifierQuickTimeMetadataVideoOrientation, nil, nil, nil },
113 { nil, nil, nil, nil, nil, nil }
133static std::optional<QMediaMetaData::Key>
toKey(AVMetadataItem *
item)
140 AVMetadataKey commonKey =
item.commonKey;
141 if (commonKey.length != 0) {
142 if ([commonKey isEqualToString:AVMetadataCommonKeyTitle]) {
144 }
else if ([commonKey isEqualToString:AVMetadataCommonKeyDescription]) {
146 }
else if ([commonKey isEqualToString:AVMetadataCommonKeyPublisher]) {
148 }
else if ([commonKey isEqualToString:AVMetadataCommonKeyCreationDate]) {
150 }
else if ([commonKey isEqualToString:AVMetadataCommonKeyType]) {
152 }
else if ([commonKey isEqualToString:AVMetadataCommonKeyLanguage]) {
154 }
else if ([commonKey isEqualToString:AVMetadataCommonKeyCopyrights]) {
156 }
else if ([commonKey isEqualToString:AVMetadataCommonKeyAlbumName]) {
158 }
else if ([commonKey isEqualToString:AVMetadataCommonKeyAuthor]) {
160 }
else if ([commonKey isEqualToString:AVMetadataCommonKeyArtist]) {
167 enum keySpaces { iTunes, QuickTime, QuickTimeUserData, IsoUserData, ID3,
Other } itemKeySpace;
168 itemKeySpace =
Other;
169 AVMetadataKeySpace keySpace = [
item keySpace];
170 AVMetadataIdentifier identifier = [
item identifier];
172 if ([keySpace isEqualToString:AVMetadataKeySpaceiTunes]) {
173 itemKeySpace = iTunes;
174 }
else if ([keySpace isEqualToString:AVMetadataKeySpaceQuickTimeMetadata]) {
175 itemKeySpace = QuickTime;
176 }
else if ([keySpace isEqualToString:AVMetadataKeySpaceQuickTimeUserData]) {
177 itemKeySpace = QuickTimeUserData;
178 }
else if ([keySpace isEqualToString:AVMetadataKeySpaceISOUserData]) {
179 itemKeySpace = IsoUserData;
180 }
else if (([keySpace isEqualToString:AVMetadataKeySpaceID3])) {
185 AVMetadataIdentifier idForKey = nil;
186 switch (itemKeySpace) {
196 case QuickTimeUserData:
206 if ([identifier isEqualToString:idForKey])