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;