diff options
| author | Felix Domke <tmbinc@elitedvb.net> | 2005-11-28 01:53:20 +0000 |
|---|---|---|
| committer | Felix Domke <tmbinc@elitedvb.net> | 2005-11-28 01:53:20 +0000 |
| commit | 05eefccc9e20d520d173156ab5dffbcc90f4351f (patch) | |
| tree | bab321e8644583f143ab8b3f2ba2210f10a43c4e /lib/dvb | |
| parent | 5d4117d8e413629c17fee5c13589375a3f1cc2bd (diff) | |
| download | enigma2-05eefccc9e20d520d173156ab5dffbcc90f4351f.tar.gz enigma2-05eefccc9e20d520d173156ab5dffbcc90f4351f.zip | |
audio: add language display
Diffstat (limited to 'lib/dvb')
| -rw-r--r-- | lib/dvb/pmt.cpp | 25 | ||||
| -rw-r--r-- | lib/dvb/pmt.h | 4 |
2 files changed, 28 insertions, 1 deletions
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 <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) @@ -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); } diff --git a/lib/dvb/pmt.h b/lib/dvb/pmt.h index a23abf1e..5f3d4777 100644 --- a/lib/dvb/pmt.h +++ b/lib/dvb/pmt.h @@ -93,7 +93,9 @@ public: 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 |
