aboutsummaryrefslogtreecommitdiff
path: root/lib/dvb
diff options
context:
space:
mode:
authorFelix Domke <tmbinc@elitedvb.net>2005-11-28 01:53:20 +0000
committerFelix Domke <tmbinc@elitedvb.net>2005-11-28 01:53:20 +0000
commit05eefccc9e20d520d173156ab5dffbcc90f4351f (patch)
treebab321e8644583f143ab8b3f2ba2210f10a43c4e /lib/dvb
parent5d4117d8e413629c17fee5c13589375a3f1cc2bd (diff)
downloadenigma2-05eefccc9e20d520d173156ab5dffbcc90f4351f.tar.gz
enigma2-05eefccc9e20d520d173156ab5dffbcc90f4351f.zip
audio: add language display
Diffstat (limited to 'lib/dvb')
-rw-r--r--lib/dvb/pmt.cpp25
-rw-r--r--lib/dvb/pmt.h4
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