#include <lib/dvb_ci/dvbci.h>
#include <dvbsi++/ca_program_map_section.h>
#include <dvbsi++/descriptor_tag.h>
+#include <dvbsi++/iso639_language_descriptor.h>
+#include <dvbsi++/component_descriptor.h>
eDVBServicePMTHandler::eDVBServicePMTHandler(int record)
:m_ca_servicePtr(0)
break;
}
if (isaudio)
+ {
+ for (DescriptorConstIterator desc = (*es)->getDescriptors()->begin();
+ desc != (*es)->getDescriptors()->end(); ++desc)
+ {
+ switch ((*desc)->getTag())
+ {
+ case ISO_639_LANGUAGE_DESCRIPTOR:
+ {
+ const Iso639LanguageList *languages = ((Iso639LanguageDescriptor*)*desc)->getIso639Languages();
+
+ /* use last language code */
+ for (Iso639LanguageConstIterator i(languages->begin()); i != languages->end(); ++i)
+ audio.language_code = (*i)->getIso639LanguageCode();
+
+ break;
+ }
+ case COMPONENT_DESCRIPTOR:
+ audio.component_tag = ((ComponentDescriptor*)*desc)->getComponentTag();
+ break;
+ }
+ }
+
program.audioStreams.push_back(audio);
+ }
if (isvideo)
program.videoStreams.push_back(video);
}
int pid;
enum { atMPEG, atAC3, atDTS };
int type; // mpeg2, ac3, dts, ...
- // language code, ...
+
+ int component_tag;
+ std::string language_code; /* iso-639, if available. */
};
struct program
from Components.ActionMap import ActionMap
from Components.MenuList import MenuList
from Components.Label import Label
+from Tools.ISO639 import LanguageCodes
class AudioSelection(Screen):
def KeyOk(self):
selection = self["tracks"].getCurrent()
print "select track " + str(selection[1])
+
self.audio.selectTrack(selection[1])
self.close()
def __init__(self, session, audio):
Screen.__init__(self, session)
- self["actions"] = ActionMap(["SetupActions"],
+ self["actions"] = ActionMap(["OkCancelActions"],
{
"cancel": self.close,
"ok": self.KeyOk,
n = audio.getNumberOfTracks()
for x in range(n):
i = audio.getTrackInfo(x)
- tlist.append((i.getDescription(), x))
+ langCode = i.getLanguage()
+
+ description = i.getDescription();
+
+ if langCode in LanguageCodes:
+ language = LanguageCodes[langCode][0]
+ if len(description):
+ description += " (" + language + ")"
+ else:
+ description = language
- self["tracks"] = MenuList(tlist)
+ tlist.append((description, x))
-
\ No newline at end of file
+ self["tracks"] = MenuList(tlist)