summaryrefslogtreecommitdiffstats
path: root/media/libstagefright
diff options
context:
space:
mode:
Diffstat (limited to 'media/libstagefright')
-rw-r--r--media/libstagefright/Android.mk9
-rw-r--r--media/libstagefright/MP3Extractor.cpp1
-rw-r--r--media/libstagefright/StagefrightMediaScanner.cpp1
-rw-r--r--media/libstagefright/StagefrightMetadataRetriever.cpp1
-rw-r--r--media/libstagefright/id3/ID3.cpp22
5 files changed, 32 insertions, 2 deletions
diff --git a/media/libstagefright/Android.mk b/media/libstagefright/Android.mk
index b25ce67..58eb12e 100644
--- a/media/libstagefright/Android.mk
+++ b/media/libstagefright/Android.mk
@@ -48,8 +48,15 @@ endif
LOCAL_C_INCLUDES:= \
$(JNI_H_INCLUDE) \
$(TOP)/external/opencore/extern_libs_v2/khronos/openmax/include \
- $(TOP)/external/opencore/android \
+ $(TOP)/external/opencore/android
+
+ifeq ($(TARGET_ARCH),arm)
+ LOCAL_C_INCLUDES += \
+ $(TOP)/external/tremolo/Tremolo
+else
+ LOCAL_C_INCLUDES += \
$(TOP)/external/tremor/Tremor
+endif
LOCAL_SHARED_LIBRARIES := \
libbinder \
diff --git a/media/libstagefright/MP3Extractor.cpp b/media/libstagefright/MP3Extractor.cpp
index accd94d..79b7674 100644
--- a/media/libstagefright/MP3Extractor.cpp
+++ b/media/libstagefright/MP3Extractor.cpp
@@ -737,6 +737,7 @@ sp<MetaData> MP3Extractor::getMetaData() {
{ kKeyYear, "TYE", "TYER" },
{ kKeyAuthor, "TXT", "TEXT" },
{ kKeyCDTrackNumber, "TRK", "TRCK" },
+ { kKeyDiscNumber, "TPA", "TPOS" },
};
static const size_t kNumMapEntries = sizeof(kMap) / sizeof(kMap[0]);
diff --git a/media/libstagefright/StagefrightMediaScanner.cpp b/media/libstagefright/StagefrightMediaScanner.cpp
index 3451383..22f701c 100644
--- a/media/libstagefright/StagefrightMediaScanner.cpp
+++ b/media/libstagefright/StagefrightMediaScanner.cpp
@@ -191,6 +191,7 @@ status_t StagefrightMediaScanner::processFile(
};
static const KeyMap kKeyMap[] = {
{ "tracknumber", METADATA_KEY_CD_TRACK_NUMBER },
+ { "discnumber", METADATA_KEY_DISC_NUMBER },
{ "album", METADATA_KEY_ALBUM },
{ "artist", METADATA_KEY_ARTIST },
{ "composer", METADATA_KEY_COMPOSER },
diff --git a/media/libstagefright/StagefrightMetadataRetriever.cpp b/media/libstagefright/StagefrightMetadataRetriever.cpp
index dfba74f..f617fe8 100644
--- a/media/libstagefright/StagefrightMetadataRetriever.cpp
+++ b/media/libstagefright/StagefrightMetadataRetriever.cpp
@@ -305,6 +305,7 @@ void StagefrightMetadataRetriever::parseMetaData() {
static const Map kMap[] = {
{ kKeyMIMEType, METADATA_KEY_MIMETYPE },
{ kKeyCDTrackNumber, METADATA_KEY_CD_TRACK_NUMBER },
+ { kKeyDiscNumber, METADATA_KEY_DISC_NUMBER },
{ kKeyAlbum, METADATA_KEY_ALBUM },
{ kKeyArtist, METADATA_KEY_ARTIST },
{ kKeyAuthor, METADATA_KEY_AUTHOR },
diff --git a/media/libstagefright/id3/ID3.cpp b/media/libstagefright/id3/ID3.cpp
index 6d64717..65a4ae4 100644
--- a/media/libstagefright/id3/ID3.cpp
+++ b/media/libstagefright/id3/ID3.cpp
@@ -24,6 +24,7 @@
#include <media/stagefright/MediaDebug.h>
#include <media/stagefright/Utils.h>
#include <utils/String8.h>
+#include <sys/endian.h>
namespace android {
@@ -336,7 +337,26 @@ void ID3::Iterator::getString(String8 *id) const {
} else {
// UCS-2
// API wants number of characters, not number of bytes...
- id->setTo((const char16_t *)(mFrameData + 1), n / 2);
+ int len = n / 2;
+ const char16_t *framedata = (const char16_t *) (mFrameData + 1);
+ char16_t *framedatacopy = NULL;
+ if (*framedata == 0xfffe) {
+ // endianness marker doesn't match host endianness, convert
+ framedatacopy = new char16_t[len];
+ for (int i = 0; i < len; i++) {
+ framedatacopy[i] = swap16(framedata[i]);
+ }
+ framedata = framedatacopy;
+ }
+ // If the string starts with an endianness marker, skip it
+ if (*framedata == 0xfeff) {
+ framedata++;
+ len--;
+ }
+ id->setTo(framedata, len);
+ if (framedatacopy != NULL) {
+ delete[] framedatacopy;
+ }
}
}