Read track language information from Matroska files
Add track language as kKeyMediaLanguage to support user selection
of audio and subtitle tracks based on language.
According to the Matroska standard language codes can be either
the 3 letters bibliographic ISO-639-2 form (like "fre" for french),
or a language code mixed with a country code for specialities in
languages (like "fre-ca" for canadian french).
Android can only return a language code in ISO-639-1 or ISO-639-2
so any country code is truncated away by this patch.
Bug: 67665876
Test: check language info in multiple audio track matroska file
Change-Id: I6b95bbcb4d3f99b87ea01a22849ba2560a85829a
diff --git a/media/libstagefright/matroska/MatroskaExtractor.cpp b/media/libstagefright/matroska/MatroskaExtractor.cpp
index bea4ced..6135b59 100644
--- a/media/libstagefright/matroska/MatroskaExtractor.cpp
+++ b/media/libstagefright/matroska/MatroskaExtractor.cpp
@@ -1399,6 +1399,14 @@
continue;
}
+ const char *language = track->GetLanguage();
+ if (language != NULL) {
+ char lang[4];
+ strncpy(lang, language, 3);
+ lang[3] = '\0';
+ meta->setCString(kKeyMediaLanguage, lang);
+ }
+
if (err != OK) {
ALOGE("skipping track, codec specific data was malformed.");
continue;