mkvparser: read track language information
Track::GetLanguageAsUTF8 is implemented to allow the user to
choose between available audio and subtitle tracks.
Change-Id: I5ec9b1c1c00182da759681ba486cbace46e9b63f
diff --git a/mkvparser.cpp b/mkvparser.cpp
index 0216d58..b71d1e4 100644
--- a/mkvparser.cpp
+++ b/mkvparser.cpp
@@ -5440,6 +5440,7 @@
Track::Info::Info():
nameAsUTF8(NULL),
+ language(NULL),
codecId(NULL),
codecNameAsUTF8(NULL),
codecPrivate(NULL),
@@ -5457,6 +5458,9 @@
delete[] nameAsUTF8;
nameAsUTF8 = NULL;
+ delete[] language;
+ language = NULL;
+
delete[] codecId;
codecId = NULL;
@@ -5516,6 +5520,9 @@
if (int status = CopyStr(&Info::nameAsUTF8, dst))
return status;
+ if (int status = CopyStr(&Info::language, dst))
+ return status;
+
if (int status = CopyStr(&Info::codecId, dst))
return status;
@@ -5570,6 +5577,11 @@
return m_info.nameAsUTF8;
}
+const char* Track::GetLanguage() const
+{
+ return m_info.language;
+}
+
const char* Track::GetCodecNameAsUTF8() const
{
return m_info.codecNameAsUTF8;
@@ -6607,6 +6619,17 @@
if (status)
return status;
}
+ else if (id == 0x02B59C) //Track Language
+ {
+ const long status = UnserializeString(
+ pReader,
+ pos,
+ size,
+ info.language);
+
+ if (status)
+ return status;
+ }
else if (id == 0x06) //CodecID
{
const long status = UnserializeString(
diff --git a/mkvparser.hpp b/mkvparser.hpp
index 8cb025d..5d7f415 100644
--- a/mkvparser.hpp
+++ b/mkvparser.hpp
@@ -334,6 +334,7 @@
long GetNumber() const;
unsigned long long GetUid() const;
const char* GetNameAsUTF8() const;
+ const char* GetLanguage() const;
const char* GetCodecNameAsUTF8() const;
const char* GetCodecId() const;
const unsigned char* GetCodecPrivate(size_t&) const;
@@ -362,6 +363,7 @@
long number;
unsigned long long uid;
char* nameAsUTF8;
+ char* language;
char* codecId;
char* codecNameAsUTF8;
unsigned char* codecPrivate;