summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/StagefrightMetadataRetriever.cpp
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2010-05-20 14:56:53 -0700
committerAndreas Huber <andih@google.com>2010-05-20 14:56:53 -0700
commit093437c388e5dff6903a3d43f2ca9f8a1ba4744a (patch)
treee60f6bdcb9589bd8476123a6aff0bb3836daa675 /media/libstagefright/StagefrightMetadataRetriever.cpp
parentcf14f10b7bf39a84205333b87d5c5b7db9598de3 (diff)
downloadframeworks_av-093437c388e5dff6903a3d43f2ca9f8a1ba4744a.zip
frameworks_av-093437c388e5dff6903a3d43f2ca9f8a1ba4744a.tar.gz
frameworks_av-093437c388e5dff6903a3d43f2ca9f8a1ba4744a.tar.bz2
Support for media extraction from .mkv/.mka Matroska files in stagefright.
Change-Id: I4c26579828ad575523ccf58b0b5cb144046c04ca related-to-bug: 2483739
Diffstat (limited to 'media/libstagefright/StagefrightMetadataRetriever.cpp')
-rw-r--r--media/libstagefright/StagefrightMetadataRetriever.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/media/libstagefright/StagefrightMetadataRetriever.cpp b/media/libstagefright/StagefrightMetadataRetriever.cpp
index 258be74..9d89c20 100644
--- a/media/libstagefright/StagefrightMetadataRetriever.cpp
+++ b/media/libstagefright/StagefrightMetadataRetriever.cpp
@@ -378,6 +378,24 @@ void StagefrightMetadataRetriever::parseMetaData() {
// The duration value is a string representing the duration in ms.
sprintf(tmp, "%lld", (maxDurationUs + 500) / 1000);
mMetaData.add(METADATA_KEY_DURATION, String8(tmp));
+
+ if (numTracks == 1) {
+ const char *fileMIME;
+ CHECK(meta->findCString(kKeyMIMEType, &fileMIME));
+
+ if (!strcasecmp(fileMIME, "video/x-matroska")) {
+ sp<MetaData> trackMeta = mExtractor->getTrackMetaData(0);
+ const char *trackMIME;
+ CHECK(trackMeta->findCString(kKeyMIMEType, &trackMIME));
+
+ if (!strncasecmp("audio/", trackMIME, 6)) {
+ // The matroska file only contains a single audio track,
+ // rewrite its mime type.
+ mMetaData.add(
+ METADATA_KEY_MIMETYPE, String8("audio/x-matroska"));
+ }
+ }
+ }
}