[vlc-devel] [PATCH] demux: mkv: parse language codes with embedded country codes
Shaleen Jain
shaleen.jain95 at gmail.com
Fri Apr 14 07:02:54 CEST 2017
fixes bug: https://trac.videolan.org/vlc/ticket/11813
mkv spec: https://www.matroska.org/technical/specs/index.html#languages
---
modules/demux/mkv/matroska_segment_parse.cpp | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/modules/demux/mkv/matroska_segment_parse.cpp b/modules/demux/mkv/matroska_segment_parse.cpp
index f4d73613c9..705a5baab0 100644
--- a/modules/demux/mkv/matroska_segment_parse.cpp
+++ b/modules/demux/mkv/matroska_segment_parse.cpp
@@ -379,9 +379,14 @@ void matroska_segment_c::ParseTrackEntry( KaxTrackEntry *m )
}
E_CASE( KaxTrackLanguage, lang )
{
- free( vars.tk->fmt.psz_language );
- vars.tk->fmt.psz_language = strdup( std::string( lang ).c_str() );
- debug( vars, "Track Language=`%s'", vars.tk->fmt.psz_language );
+ free(vars.tk->fmt.psz_language);
+ char* psz_lang = strdup(std::string(lang).c_str());
+ if (psz_lang != NULL && strchr(psz_lang, '-') != NULL) {
+ vars.tk->fmt.psz_language = strtok(psz_lang, "-");
+ } else {
+ vars.tk->fmt.psz_language = psz_lang;
+ }
+ debug(vars, "Track Language=`%s'", vars.tk->fmt.psz_language );
}
E_CASE( KaxCodecID, codecid )
{
--
2.12.2
More information about the vlc-devel
mailing list