summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarco Nelissen <marcone@google.com>2011-01-06 11:12:17 -0800
committerMarco Nelissen <marcone@google.com>2011-01-07 12:42:07 -0800
commit11f8109ad8646d3acd9a0987613229cde59d52c1 (patch)
tree71db4bd4e70e89995712b0fa45ac4f5e7a2ad0da
parent20ad3a341a96e7746015ccb7369fa567897e11f6 (diff)
downloadframeworks_av-11f8109ad8646d3acd9a0987613229cde59d52c1.zip
frameworks_av-11f8109ad8646d3acd9a0987613229cde59d52c1.tar.gz
frameworks_av-11f8109ad8646d3acd9a0987613229cde59d52c1.tar.bz2
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 (cherry-picked from GB because of weird automerger failure) Change-Id: Ibf12a3d6bc8bbc2ac5ea815de6b33414b8f53f0f
-rw-r--r--include/media/mediametadataretriever.h1
-rw-r--r--include/media/stagefright/MetaData.h1
-rw-r--r--media/libstagefright/MP3Extractor.cpp1
-rw-r--r--media/libstagefright/MPEG4Extractor.cpp11
-rw-r--r--media/libstagefright/OggExtractor.cpp3
-rw-r--r--media/libstagefright/StagefrightMediaScanner.cpp1
-rw-r--r--media/libstagefright/StagefrightMetadataRetriever.cpp1
7 files changed, 19 insertions, 0 deletions
diff --git a/include/media/mediametadataretriever.h b/include/media/mediametadataretriever.h
index ed54b37..03dd52d 100644
--- a/include/media/mediametadataretriever.h
+++ b/include/media/mediametadataretriever.h
@@ -56,6 +56,7 @@ enum {
METADATA_KEY_MIMETYPE = 22,
METADATA_KEY_DISC_NUMBER = 23,
METADATA_KEY_ALBUMARTIST = 24,
+ METADATA_KEY_COMPILATION = 25,
// Add more here...
};
diff --git a/include/media/stagefright/MetaData.h b/include/media/stagefright/MetaData.h
index 5f33739..5170a2c 100644
--- a/include/media/stagefright/MetaData.h
+++ b/include/media/stagefright/MetaData.h
@@ -80,6 +80,7 @@ enum {
kKeyDiscNumber = 'dnum', // cstring
kKeyDate = 'date', // cstring
kKeyWriter = 'writ', // cstring
+ kKeyCompilation = 'cpil', // cstring
kKeyTimeScale = 'tmsl', // int32_t
// video profile and level
diff --git a/media/libstagefright/MP3Extractor.cpp b/media/libstagefright/MP3Extractor.cpp
index 9610f90..0bb3a86 100644
--- a/media/libstagefright/MP3Extractor.cpp
+++ b/media/libstagefright/MP3Extractor.cpp
@@ -614,6 +614,7 @@ sp<MetaData> MP3Extractor::getMetaData() {
{ kKeyAuthor, "TXT", "TEXT" },
{ kKeyCDTrackNumber, "TRK", "TRCK" },
{ kKeyDiscNumber, "TPA", "TPOS" },
+ { kKeyCompilation, "TCP", "TCMP" },
};
static const size_t kNumMapEntries = sizeof(kMap) / sizeof(kMap[0]);
diff --git a/media/libstagefright/MPEG4Extractor.cpp b/media/libstagefright/MPEG4Extractor.cpp
index dfc9b5a..bafa243 100644
--- a/media/libstagefright/MPEG4Extractor.cpp
+++ b/media/libstagefright/MPEG4Extractor.cpp
@@ -1392,6 +1392,17 @@ status_t MPEG4Extractor::parseMetaData(off64_t offset, size_t size) {
metadataKey = kKeyGenre;
break;
}
+ case FOURCC('c', 'p', 'i', 'l'):
+ {
+ if (size == 9 && flags == 21) {
+ char tmp[16];
+ sprintf(tmp, "%d",
+ (int)buffer[size - 1]);
+
+ mFileMetaData->setCString(kKeyCompilation, tmp);
+ }
+ break;
+ }
case FOURCC('t', 'r', 'k', 'n'):
{
if (size == 16 && flags == 0) {
diff --git a/media/libstagefright/OggExtractor.cpp b/media/libstagefright/OggExtractor.cpp
index 4b8a014..cf622af 100644
--- a/media/libstagefright/OggExtractor.cpp
+++ b/media/libstagefright/OggExtractor.cpp
@@ -660,6 +660,9 @@ void MyVorbisExtractor::parseFileMetaData() {
} kMap[] = {
{ "TITLE", kKeyTitle },
{ "ARTIST", kKeyArtist },
+ { "ALBUMARTIST", kKeyAlbumArtist },
+ { "ALBUM ARTIST", kKeyAlbumArtist },
+ { "COMPILATION", kKeyCompilation },
{ "ALBUM", kKeyAlbum },
{ "COMPOSER", kKeyComposer },
{ "GENRE", kKeyGenre },
diff --git a/media/libstagefright/StagefrightMediaScanner.cpp b/media/libstagefright/StagefrightMediaScanner.cpp
index 86e0e73..5d15246 100644
--- a/media/libstagefright/StagefrightMediaScanner.cpp
+++ b/media/libstagefright/StagefrightMediaScanner.cpp
@@ -156,6 +156,7 @@ status_t StagefrightMediaScanner::processFile(
{ "year", METADATA_KEY_YEAR },
{ "duration", METADATA_KEY_DURATION },
{ "writer", METADATA_KEY_WRITER },
+ { "compilation", METADATA_KEY_COMPILATION },
};
static const size_t kNumEntries = sizeof(kKeyMap) / sizeof(kKeyMap[0]);
diff --git a/media/libstagefright/StagefrightMetadataRetriever.cpp b/media/libstagefright/StagefrightMetadataRetriever.cpp
index 8cd2998..4f483ac 100644
--- a/media/libstagefright/StagefrightMetadataRetriever.cpp
+++ b/media/libstagefright/StagefrightMetadataRetriever.cpp
@@ -394,6 +394,7 @@ void StagefrightMetadataRetriever::parseMetaData() {
{ kKeyTitle, METADATA_KEY_TITLE },
{ kKeyYear, METADATA_KEY_YEAR },
{ kKeyWriter, METADATA_KEY_WRITER },
+ { kKeyCompilation, METADATA_KEY_COMPILATION },
};
static const size_t kNumMapEntries = sizeof(kMap) / sizeof(kMap[0]);