diff options
author | Gloria Wang <gwang@google.com> | 2011-05-03 15:59:03 -0700 |
---|---|---|
committer | Gloria Wang <gwang@google.com> | 2011-05-03 16:41:17 -0700 |
commit | 7a1e3e81264189e23a1db2b174e1b5a5d4c7d1c3 (patch) | |
tree | d75e0a639df8f389786d9bdf6c6de1f22729b135 /media/libstagefright/StagefrightMetadataRetriever.cpp | |
parent | 10d227074b5a67a2e738d72888ece4dd24537c66 (diff) | |
download | frameworks_av-7a1e3e81264189e23a1db2b174e1b5a5d4c7d1c3.zip frameworks_av-7a1e3e81264189e23a1db2b174e1b5a5d4c7d1c3.tar.gz frameworks_av-7a1e3e81264189e23a1db2b174e1b5a5d4c7d1c3.tar.bz2 |
Initial CL for the timed text support:
- Add support for MP4 timed text
- Add API for app to turn on/off a text track
- Add timed text metadata(language) in the MediaMetadataRetriever
Change-Id: I0055beba38ac761627dbcc6d581ae9582d68bb94
Diffstat (limited to 'media/libstagefright/StagefrightMetadataRetriever.cpp')
-rw-r--r-- | media/libstagefright/StagefrightMetadataRetriever.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/media/libstagefright/StagefrightMetadataRetriever.cpp b/media/libstagefright/StagefrightMetadataRetriever.cpp index 7621f2c..4c3dc47 100644 --- a/media/libstagefright/StagefrightMetadataRetriever.cpp +++ b/media/libstagefright/StagefrightMetadataRetriever.cpp @@ -27,6 +27,7 @@ #include <media/stagefright/MediaExtractor.h> #include <media/stagefright/MetaData.h> #include <media/stagefright/OMXCodec.h> +#include <media/stagefright/MediaDefs.h> namespace android { @@ -429,6 +430,7 @@ void StagefrightMetadataRetriever::parseMetaData() { // The overall duration is the duration of the longest track. int64_t maxDurationUs = 0; + String8 timedTextLang; for (size_t i = 0; i < numTracks; ++i) { sp<MetaData> trackMeta = mExtractor->getTrackMetaData(i); @@ -452,10 +454,22 @@ void StagefrightMetadataRetriever::parseMetaData() { CHECK(trackMeta->findInt32(kKeyWidth, &videoWidth)); CHECK(trackMeta->findInt32(kKeyHeight, &videoHeight)); + } else if (!strcasecmp(mime, MEDIA_MIMETYPE_TEXT_3GPP)) { + const char *lang; + trackMeta->findCString(kKeyMediaLanguage, &lang); + timedTextLang.append(String8(lang)); + timedTextLang.append(String8(":")); } } } + // To save the language codes for all timed text tracks + // If multiple text tracks present, the format will look + // like "eng:chi" + if (!timedTextLang.isEmpty()) { + mMetaData.add(METADATA_KEY_TIMED_TEXT_LANGUAGES, timedTextLang); + } + // The duration value is a string representing the duration in ms. sprintf(tmp, "%lld", (maxDurationUs + 500) / 1000); mMetaData.add(METADATA_KEY_DURATION, String8(tmp)); |