X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/68271eeaf83872270f13cc01e98960367d7d553f..65fba71fdcfa303091de1a00120dbb58f8978a69:/lib/dvb/pmt.cpp diff --git a/lib/dvb/pmt.cpp b/lib/dvb/pmt.cpp index c0c65b27..5a1b7c5c 100644 --- a/lib/dvb/pmt.cpp +++ b/lib/dvb/pmt.cpp @@ -6,6 +6,8 @@ #include #include #include +#include +#include eDVBServicePMTHandler::eDVBServicePMTHandler(int record) :m_ca_servicePtr(0) @@ -175,7 +177,30 @@ int eDVBServicePMTHandler::getProgramInfo(struct program &program) 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); }