From 6b924837dedad17ea56ca37075e760828469abcb Mon Sep 17 00:00:00 2001 From: ghost Date: Mon, 11 May 2009 11:42:51 +0200 Subject: [PATCH] show both language codes / languages when two language codes are transmitted for one single pid --- lib/dvb/pmt.cpp | 10 ++++++++-- lib/python/Screens/InfoBarGenerics.py | 14 +++++++++++--- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/lib/dvb/pmt.cpp b/lib/dvb/pmt.cpp index 0198c8f..da45c8e 100644 --- a/lib/dvb/pmt.cpp +++ b/lib/dvb/pmt.cpp @@ -399,10 +399,16 @@ int eDVBServicePMTHandler::getProgramInfo(struct program &program) case ISO_639_LANGUAGE_DESCRIPTOR: if (!isvideo) { + int cnt=0; const Iso639LanguageList *languages = ((Iso639LanguageDescriptor*)*desc)->getIso639Languages(); /* use last language code */ - for (Iso639LanguageConstIterator i(languages->begin()); i != languages->end(); ++i) - audio.language_code = (*i)->getIso639LanguageCode(); + for (Iso639LanguageConstIterator i(languages->begin()); i != languages->end(); ++i, ++cnt) + { + if (cnt == 0) + audio.language_code = (*i)->getIso639LanguageCode(); + else + audio.language_code += "/" + (*i)->getIso639LanguageCode(); + } } break; case STREAM_IDENTIFIER_DESCRIPTOR: diff --git a/lib/python/Screens/InfoBarGenerics.py b/lib/python/Screens/InfoBarGenerics.py index c161818..9adaa6d 100644 --- a/lib/python/Screens/InfoBarGenerics.py +++ b/lib/python/Screens/InfoBarGenerics.py @@ -1631,12 +1631,20 @@ class InfoBarAudioSelection: idx = 0 while idx < n: + cnt = 0 i = audio.getTrackInfo(idx) - language = i.getLanguage() + languages = i.getLanguage().split('/') description = i.getDescription() + language = "" - if LanguageCodes.has_key(language): - language = LanguageCodes[language][0] + for lang in languages: + if cnt: + language += ' / ' + if LanguageCodes.has_key(lang): + language += LanguageCodes[lang][0] + else: + language += lang + cnt += 1 if len(description): description += " (" + language + ")" -- 2.7.4