Skip to content

Commit ba77a3f

Browse files
committed
Add support for the "compilation" tag in mp3, mp4 and ogg, and also add
support for two common ways of specifying album artist in ogg files. b/3311831 Change-Id: Iba1152013b7577168af71f947d7249560419fa05
1 parent f54ad8d commit ba77a3f

File tree

9 files changed

+27
-0
lines changed

9 files changed

+27
-0
lines changed

core/java/android/provider/MediaStore.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -899,6 +899,13 @@ public interface AudioColumns extends MediaColumns {
899899
*/
900900
public static final String ALBUM_ARTIST = "album_artist";
901901

902+
/**
903+
* Whether the song is part of a compilation
904+
* <P>Type: TEXT</P>
905+
* @hide
906+
*/
907+
public static final String COMPILATION = "compilation";
908+
902909
/**
903910
* A non human readable key calculated from the ARTIST, used for
904911
* searching, sorting and grouping

include/media/mediametadataretriever.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ enum {
5656
METADATA_KEY_MIMETYPE = 22,
5757
METADATA_KEY_DISC_NUMBER = 23,
5858
METADATA_KEY_ALBUMARTIST = 24,
59+
METADATA_KEY_COMPILATION = 25,
5960
// Add more here...
6061
};
6162

include/media/stagefright/MetaData.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ enum {
7373
kKeyDiscNumber = 'dnum', // cstring
7474
kKeyDate = 'date', // cstring
7575
kKeyWriter = 'writ', // cstring
76+
kKeyCompilation = 'cpil', // cstring
7677
kKeyTimeScale = 'tmsl', // int32_t
7778

7879
// video profile and level

media/java/android/media/MediaMetadataRetriever.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,5 +258,6 @@ protected void finalize() throws Throwable {
258258
public static final int METADATA_KEY_MIMETYPE = 22;
259259
public static final int METADATA_KEY_DISCNUMBER = 23;
260260
public static final int METADATA_KEY_ALBUMARTIST = 24;
261+
public static final int METADATA_KEY_COMPILATION = 25;
261262
// Add more here...
262263
}

media/libstagefright/MP3Extractor.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -743,6 +743,7 @@ sp<MetaData> MP3Extractor::getMetaData() {
743743
{ kKeyAuthor, "TXT", "TEXT" },
744744
{ kKeyCDTrackNumber, "TRK", "TRCK" },
745745
{ kKeyDiscNumber, "TPA", "TPOS" },
746+
{ kKeyCompilation, "TCP", "TCMP" },
746747
};
747748
static const size_t kNumMapEntries = sizeof(kMap) / sizeof(kMap[0]);
748749

media/libstagefright/MPEG4Extractor.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1176,6 +1176,17 @@ status_t MPEG4Extractor::parseMetaData(off_t offset, size_t size) {
11761176
metadataKey = kKeyGenre;
11771177
break;
11781178
}
1179+
case FOURCC('c', 'p', 'i', 'l'):
1180+
{
1181+
if (size == 9 && flags == 21) {
1182+
char tmp[16];
1183+
sprintf(tmp, "%d",
1184+
(int)buffer[size - 1]);
1185+
1186+
mFileMetaData->setCString(kKeyCompilation, tmp);
1187+
}
1188+
break;
1189+
}
11791190
case FOURCC('t', 'r', 'k', 'n'):
11801191
{
11811192
if (size == 16 && flags == 0) {

media/libstagefright/OggExtractor.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -660,6 +660,9 @@ void MyVorbisExtractor::parseFileMetaData() {
660660
} kMap[] = {
661661
{ "TITLE", kKeyTitle },
662662
{ "ARTIST", kKeyArtist },
663+
{ "ALBUMARTIST", kKeyAlbumArtist },
664+
{ "ALBUM ARTIST", kKeyAlbumArtist },
665+
{ "COMPILATION", kKeyCompilation },
663666
{ "ALBUM", kKeyAlbum },
664667
{ "COMPOSER", kKeyComposer },
665668
{ "GENRE", kKeyGenre },

media/libstagefright/StagefrightMediaScanner.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ status_t StagefrightMediaScanner::processFile(
155155
{ "year", METADATA_KEY_YEAR },
156156
{ "duration", METADATA_KEY_DURATION },
157157
{ "writer", METADATA_KEY_WRITER },
158+
{ "compilation", METADATA_KEY_COMPILATION },
158159
};
159160
static const size_t kNumEntries = sizeof(kKeyMap) / sizeof(kKeyMap[0]);
160161

media/libstagefright/StagefrightMetadataRetriever.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,7 @@ void StagefrightMetadataRetriever::parseMetaData() {
355355
{ kKeyTitle, METADATA_KEY_TITLE },
356356
{ kKeyYear, METADATA_KEY_YEAR },
357357
{ kKeyWriter, METADATA_KEY_WRITER },
358+
{ kKeyCompilation, METADATA_KEY_COMPILATION },
358359
};
359360
static const size_t kNumMapEntries = sizeof(kMap) / sizeof(kMap[0]);
360361

0 commit comments

Comments
 (0)