aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorghost <andreas.monzner@multimedia-labs.de>2010-11-24 23:09:52 +0100
committerghost <andreas.monzner@multimedia-labs.de>2010-11-24 23:09:52 +0100
commit266943db269293b00a9f2b59338b81cca5a928be (patch)
treebe989e8a0ced32c5272b86340aad1fcd0afa0a57 /lib
parent8682ee11e24311ae3ae84665cd2da0075a0cf413 (diff)
downloadenigma2-266943db269293b00a9f2b59338b81cca5a928be.tar.gz
enigma2-266943db269293b00a9f2b59338b81cca5a928be.zip
add DTS-HD as known audio format, add detection to pmt parser (no hardware support for DTS-HD yet)
Diffstat (limited to 'lib')
-rw-r--r--lib/dvb/decoder.cpp3
-rw-r--r--lib/dvb/decoder.h2
-rw-r--r--lib/dvb/idvb.h2
-rw-r--r--lib/dvb/pmt.cpp7
-rw-r--r--lib/dvb/pmt.h2
-rw-r--r--lib/dvb/tstools.cpp2
-rw-r--r--lib/service/servicedvb.cpp2
7 files changed, 17 insertions, 3 deletions
diff --git a/lib/dvb/decoder.cpp b/lib/dvb/decoder.cpp
index 88cd3ee1..8ed9f43f 100644
--- a/lib/dvb/decoder.cpp
+++ b/lib/dvb/decoder.cpp
@@ -203,6 +203,9 @@ int eDVBAudio::startPid(int pid, int type)
case aLPCM:
bypass = 6;
break;
+ case aDTSHD:
+ bypass = 0x10;
+ break;
}
eDebugNoNewLine("AUDIO_SET_BYPASS(%d) - ", bypass);
diff --git a/lib/dvb/decoder.h b/lib/dvb/decoder.h
index 3a0fbac1..7610b654 100644
--- a/lib/dvb/decoder.h
+++ b/lib/dvb/decoder.h
@@ -13,7 +13,7 @@ private:
ePtr<eDVBDemux> m_demux;
int m_fd, m_fd_demux, m_dev, m_is_freezed;
public:
- enum { aMPEG, aAC3, aDTS, aAAC, aAACHE, aLPCM };
+ enum { aMPEG, aAC3, aDTS, aAAC, aAACHE, aLPCM, aDTSHD };
eDVBAudio(eDVBDemux *demux, int dev);
enum { aMonoLeft, aStereo, aMonoRight };
void setChannel(int channel);
diff --git a/lib/dvb/idvb.h b/lib/dvb/idvb.h
index f15cd04e..e56a2c7b 100644
--- a/lib/dvb/idvb.h
+++ b/lib/dvb/idvb.h
@@ -650,7 +650,7 @@ public:
/** Set Displayed Video PID and type */
virtual RESULT setVideoPID(int vpid, int type)=0;
- enum { af_MPEG, af_AC3, af_DTS, af_AAC };
+ enum { af_MPEG, af_AC3, af_DTS, af_AAC, af_DTSHD };
/** Set Displayed Audio PID and type */
virtual RESULT setAudioPID(int apid, int type)=0;
diff --git a/lib/dvb/pmt.cpp b/lib/dvb/pmt.cpp
index e54601cf..0b3e34a3 100644
--- a/lib/dvb/pmt.cpp
+++ b/lib/dvb/pmt.cpp
@@ -305,6 +305,13 @@ int eDVBServicePMTHandler::getProgramInfo(struct program &program)
isaudio = 1;
audio.type = audioStream::atDTS;
}
+ case 0x86: // Blueray DTS-HD (dvb user private...)
+ case 0xA6: // Blueray secondary DTS-HD
+ if (!isvideo && !isaudio)
+ {
+ isaudio = 1;
+ audio.type = audioStream::atDTSHD;
+ }
case 0x06: // PES Private
case 0xEA: // TS_PSI_ST_SMPTE_VC1
{
diff --git a/lib/dvb/pmt.h b/lib/dvb/pmt.h
index de0de052..e61f8713 100644
--- a/lib/dvb/pmt.h
+++ b/lib/dvb/pmt.h
@@ -144,7 +144,7 @@ public:
{
int pid,
rdsPid; // hack for some radio services which transmit radiotext on different pid (i.e. harmony fm, HIT RADIO FFH, ...)
- enum { atMPEG, atAC3, atDTS, atAAC, atAACHE, atLPCM };
+ enum { atMPEG, atAC3, atDTS, atAAC, atAACHE, atLPCM, atDTSHD };
int type; // mpeg2, ac3, dts, ...
int component_tag;
diff --git a/lib/dvb/tstools.cpp b/lib/dvb/tstools.cpp
index cfea3fdd..e93cfc0a 100644
--- a/lib/dvb/tstools.cpp
+++ b/lib/dvb/tstools.cpp
@@ -212,6 +212,8 @@ int eDVBTSTools::getPTS(off_t &offset, pts_t &pts, int fixed)
break;
case 0x71: // AC3 / DTS
break;
+ case 0x72: // DTS - HD
+ break;
default:
eDebug("skip unknwn stream_id_extension %02x\n", payload[9+offs]);
continue;
diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp
index 0d617c30..0a2146db 100644
--- a/lib/service/servicedvb.cpp
+++ b/lib/service/servicedvb.cpp
@@ -1797,6 +1797,8 @@ RESULT eDVBServicePlay::getTrackInfo(struct iAudioTrackInfo &info, unsigned int
info.m_description = "AAC-HE";
else if (program.audioStreams[i].type == eDVBServicePMTHandler::audioStream::atDTS)
info.m_description = "DTS";
+ else if (program.audioStreams[i].type == eDVBServicePMTHandler::audioStream::atDTSHD)
+ info.m_description = "DTS-HD";
else
info.m_description = "???";